返回行,当唯一键变化发生时

插入数据时是否可以返回导致 MSSQL 中唯一键冲突的记录?


当年话下
浏览 150回答 2
2回答

动漫人物

试试这个架构select * from (   --query used for your insert) f1where exists (   select * from tablewhereyouwantinsert f2   where f1.key1=f2.key1 and f1.key2=f2.key2 ---- keys used into your unique key violation)

慕森王

您可以使用MERGE单个语句有条件地从数据库中插入或检索行。不幸的是,要获得检索操作,我们必须触及现有行,我假设这是可以接受的,并且您将能够构建一个影响较小的“No-Op” UPDATE,如下所示:create table T (ID int not null primary key, Col1 varchar(3) not null)insert into T(ID,Col1) values (1,'abc');merge T tusing (values (1,'def')) s(ID,Col1)on t.ID = s.IDwhen matched then update set Col1 = t.Col1when not matched then insert (ID,Col1) values (s.ID,s.Col1)output inserted.*,$action;这会产生:ID          Col1 $action----------- ---- ----------1           abc  UPDATE包括该$action列可以帮助您知道这是一个现有的行而不是insert成功的行(1,def)。
打开App,查看更多内容
随时随地看视频慕课网APP