create table MyTable2 (
[a] decimal(18,2) not null,
[b] decimal(18,2) not null,
[c] decimal(18,2) not null,
[d] decimal(18,2),
CONSTRAINT myPK PRIMARY KEY (a,b,c)
)
CREATE UNIQUE INDEX MyUniqueIgnoringDups
ON MyTable2 (a,b,c)
WITH IGNORE_DUP_KEY --SQL 2000 syntax
--WITH(IGNORE_DUP_KEY = On) --SQL 2005+ syntax
--insert some data to test.
insert into mytable2 (a,b,c,d) values (1,2,3,4);--succeeds; inserts properly
insert into mytable2 (a,b,c,d) values (1,2,3,5);--insert fails, no err is raised.
-- "Duplicate key was ignored. (0 row(s) affected)"
对于任何感兴趣的人,以下是Erland Sommarskog 在 MSDN 论坛上发生的事情的解释:
当IGNORE_DUP_KEY
为 OFF 时,重复的键值会导致错误并回滚整个语句。也就是说,如果语句试图插入多行,则不会插入任何行。
当IGNORE_DUP_KEY
为 ON 时,重复的键值将被简单地忽略。该语句成功完成并插入任何其他行。