UNIQUE - 在表中拥有唯一行的方法?

net*_*jor 2 sql sql-server constraints sql-server-2008

我对db表中的唯一行有问题,现在可以这样做:

id  | Name  | LastName  | City
-------------------------------------
1   | John  | Moore     | London
2   | John  | Moore     | London
Run Code Online (Sandbox Code Playgroud)

当我在所有列中使用UNIQUE属性时,我有错误插入第二个摩尔甚至它是不同的名称:/

如何使用UNIQUE(或者可能是INDEX?)在db中的表中执行类似的操作:

id  | Name  | LastName  | City
-------------------------------------
1   | John  | Moore     | London
2   | Jake  | Moore     | London
3   | John  | Keen      | London
4   | John  | Moore     | London //but good error when inserting the same row
Run Code Online (Sandbox Code Playgroud)

很抱歉,如果问题很简单,但我是sql的初学者,并且遇到问题,找到一个使用UNIQUE之类的好例子:/或者我必须在插入新行之前从db中选择一个表并检查它是否存在?

Rob*_*ley 10

删除单个列上的唯一索引并将它们放在一起,如下所示:

CREATE UNIQUE INDEX ixFullName ON yourTable (LastName, Name);
Run Code Online (Sandbox Code Playgroud)

  • 我打算提出一个独特的约束 - 在看到你的答案之后我做了一些挖掘,发现了这篇关于唯一索引和唯一约束之间差异的有趣文章http://msdn.microsoft.com/en-us/library/aa224827(SQL 0.80)的.aspx (2认同)