为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
当年话下 2022-01-16 20:02:32
插入数据时是否可以返回导致 MSSQL 中唯一键冲突的记录?
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

试试这个架构


select * from 

(

   --query used for your insert


) f1

where exists 

(

   select * from tablewhereyouwantinsert f2

   where f1.key1=f2.key1 and f1.key2=f2.key2 ---- keys used into your unique key violation


)


查看完整回答
反对 回复 2022-01-16
?
慕森王

TA贡献1777条经验 获得超3个赞

您可以使用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 t

using (values (1,'def')) s(ID,Col1)

on t.ID = s.ID

when matched then update set Col1 = t.Col1

when not matched then insert (ID,Col1) values (s.ID,s.Col1)

output inserted.*,$action;

这会产生:


ID          Col1 $action

----------- ---- ----------

1           abc  UPDATE

包括该$action列可以帮助您知道这是一个现有的行而不是insert成功的行(1,def)。


查看完整回答
反对 回复 2022-01-16
  • 2 回答
  • 0 关注
  • 149 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信