【发布时间】:2013-05-25 08:00:33
【问题描述】:
我有一个有 10 列的表,但只关心 3 列。想象一下我的桌子是这样的:
CREATE TABLE MyTable ( RowID int IDENTITY(1,1), UserID int, NodeID int, RoleID int )
我需要的是一个强制执行以下内容的约束:每个 NodeID 的 UserID 和 RoleID 必须是唯一的(即,一个用户不能在多个节点中拥有相同的角色)。换句话说,我想允许
INSERT MyTable (UserID, NodeID, RoleID) SELECT 1, 1, 1
但不允许
INSERT MyTable (UserID, NodeID, RoleID) SELECT 1, 2, 1
如果第一次插入已经发生,因为这会导致用户在多个节点中拥有一个角色。
希望这很简单,我只是让它变得比我的大脑需要的更复杂。
【问题讨论】:
-
INSERT MyTable (UserID, NodeID, RoleID) SELECT 1, 2, 2 怎么样?
-
我可以接受在两个不同节点中拥有两个不同角色的用户,这样就可以了。好问题。 :)
-
那你不是在寻找唯一的 UserID + RoleID 吗?
-
我也在寻找它,但仅限于每个 NodeID。
标签: sql-server sql-server-2008 unique-constraint