SQL仅为两列

时间:2016-04-16 11:54:34

标签: sql unique

我希望例如用户可以添加名称JHONE和25岁,所以下次他可以添加JHONE,26或ALEX 25,但不能再添加JHONE,25。

所以我正在寻找两个独立的专栏。

P.S。如果之前提到同样的问题,我很抱歉。

修改

这是我的例子:

enter image description here

想使userIdG和doWithCar会像这样

  

102163096246025413003查看

     

102163096246025413003购买

     

102163096246025413003让

     

102163096246025413003出售

对于Id = 102163096246025413003,您无法再添加任何值,BECAUSE列 doWithCar 将只有4种可能的选择视图,购买,出租和出售

1 个答案:

答案 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