【发布时间】:2019-08-08 23:52:56
【问题描述】:
我正在尝试让每个用户 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
在 MS SQL Server MS 的“检查约束表达式”窗口中,我尝试过这样的示例创建表
Name NOT IN (SELECT Name WHERE UserID = 3)
但即使这样也会导致错误“在此上下文中不允许子查询。只允许标量表达式。')' 附近的语法不正确”
有没有办法实现我的目标?
顺便提一句。是否有 MS 相当于 Oracle 的 :NEW.field?这会很有用:
Name NOT IN (SELECT Name WHERE UserID = :NEW.UserID)
...但它仍然是一个子查询
主要目标是为每个用户创建一个设置字典(C#)
【问题讨论】:
标签: sql-server unique-constraint