我有三个表:
1)应用程序(AppId,名称) 2)屏幕(ScreenId,名称) 3)关系(AppId,ScreenId)
现在,我想对相关表施加一些限制:可以将同一屏幕分配给多个应用程序,但是不能将两个具有相同名称的屏幕分配给同一应用程序。
我知道我可以将Screen.Name添加到关系表中,然后在AppId和Screen.Name上创建PK,但是我不希望这样的解决方案,因为Screen.Name可能会发生变化。
为了达到这种限制,我还需要其他哪些选择?
您可以基于和表创建索引视图,Relation并在其中Screen应用唯一约束。
Relation
Screen
create view DRI_UniqueScreens with SCHEMABINDING as select r.AppId,s.Name from [Schema].Relation r inner join [Schema].Screen s on r.ScreenId = s.ScreenId GO CREATE UNIQUE CLUSTERED INDEX IX_DRI_UniqueScreens on DRI_UniqueScreens (AppId,Name)