我希望例如用户可以添加名称JHONE和25岁,所以下次他可以添加JHONE,26或ALEX 25,但不能再添加JHONE,25。
所以我正在寻找两个独立的专栏。
P.S。如果之前提到同样的问题,我很抱歉。
修改
这是我的例子:
想使userIdG和doWithCar会像这样
102163096246025413003查看
102163096246025413003购买
102163096246025413003让
102163096246025413003出售
对于Id = 102163096246025413003,您无法再添加任何值,BECAUSE列 doWithCar 将只有4种可能的选择视图,购买,出租和出售
答案 0 :(得分:2)
您可以在UNIQUE
中指定多个列:
CREATE TABLE tab(ID INT IDENTITY(1,1) PRIMARY KEY, name VARCHAR(100), age INT
,UNIQUE(name, age));
INSERT INTO tab(name, age) VALUES ('John', 25);
INSERT INTO tab(name, age) VALUES ('John', 26);
-- INSERT INTO tab(name,age) VALUES ('John', 25);
-- Violation of UNIQUE KEY constraint 'UQ__tab__CF0426FD76D3370A'.
-- Cannot insert duplicate key in object 'dbo.tab'.
-- The duplicate key value is (John, 25).
-- The statement has been terminated.
SELECT * FROM tab;
的 LiveDemo
强>
注意:
您应该存储date of birth
而不是年龄本身(或制作age
计算列并设置UNIQUE(name, dob)
)。
这是我不明白的)数据库将如何知道它应该是两列唯一而不是每列都是唯一的
这些是不同的概念。 DB从UNIQUE
约束定义“知道”它:
UNIQUE(userIdG,doWithCar) -- pair of column is unique
!=
UNIQUE(userIdG),UNIQUE(doWithCar) -- each column is unique