"Check Constraint Expression" window 中每个 UserID 约束的唯一名称
Unique Name for each UserID constraint in "Check Constraint Expression" window
我试图让我的设置名称对于每个用户 ID 都是唯一的
Table: Settings
Cols: ID, Name, Value, UserID
Row1: 1, 'Database', 'shop', 1
Row2: 2, 'DBLogin' , 'admin', 1
Row3: 3, 'DBPass' , 'hash', 1
Row4: 4, 'Database', 'lol', 2 --this is ok
Row5: 5, 'Database', 'shop', 3 --this is ok
Row6: 6, 'Database', 'lol', 3 --this shoud be rejected
在 "Check Constraint Expression" window of MS SQL Server MS, table creation I've tried such example
Name NOT IN (SELECT Name WHERE UserID = 3)
但即使这样也会导致错误 "Subqueries are not allowed in this context. Only scalar expressions are allowed. Incorrect syntax near ')'"
有没有办法实现我的目标?
顺便提一句。是否有 MS 的等同于 Oracle 的 :NEW.field?这会很有用:
Name NOT IN (SELECT Name WHERE UserID = :NEW.UserID)
...但它仍然是一个子查询
主要目标是为每个用户创建一个设置字典(C#)
只需对其创建唯一约束。
CREATE UNIQUE INDEX uk_settings_userid_name ON Settings (UserID, Name);
您可以使用 CONSTRAINT
或 Unique Index
中的一个就足够了。
约束:
ALTER TABLE Settings
ADD CONSTRAINT UQSettings UNIQUE(Name, [Value])
唯一索引:
CREATE UNIQUE INDEX UQSettings ON Settings(Name, [Value])
我试图让我的设置名称对于每个用户 ID 都是唯一的
Table: Settings
Cols: ID, Name, Value, UserID
Row1: 1, 'Database', 'shop', 1
Row2: 2, 'DBLogin' , 'admin', 1
Row3: 3, 'DBPass' , 'hash', 1
Row4: 4, 'Database', 'lol', 2 --this is ok
Row5: 5, 'Database', 'shop', 3 --this is ok
Row6: 6, 'Database', 'lol', 3 --this shoud be rejected
在 "Check Constraint Expression" window of MS SQL Server MS, table creation I've tried such example
Name NOT IN (SELECT Name WHERE UserID = 3)
但即使这样也会导致错误 "Subqueries are not allowed in this context. Only scalar expressions are allowed. Incorrect syntax near ')'"
有没有办法实现我的目标?
顺便提一句。是否有 MS 的等同于 Oracle 的 :NEW.field?这会很有用:
Name NOT IN (SELECT Name WHERE UserID = :NEW.UserID)
...但它仍然是一个子查询
主要目标是为每个用户创建一个设置字典(C#)
只需对其创建唯一约束。
CREATE UNIQUE INDEX uk_settings_userid_name ON Settings (UserID, Name);
您可以使用 CONSTRAINT
或 Unique Index
中的一个就足够了。
约束:
ALTER TABLE Settings
ADD CONSTRAINT UQSettings UNIQUE(Name, [Value])
唯一索引:
CREATE UNIQUE INDEX UQSettings ON Settings(Name, [Value])