Name,Age,Seq
G,30,1
G,31,1
K,28,3
K,29,3
k,28,3
V,,4
V,28,4
当我插入像这样的第一行
时,我用列Name, Age, Seq
表
G, 30, 1
现在我想要每当我插入第二行相同的seq no。 (1)在上面排 该行应替换为现有行。
就像我正在插入G,32,1
一样,现在应该替换现有记录G, 30, 1
G, 32, 1
因为seq。 (1)匹配。
我怎样才能做到这一点。我需要一个触发器。
注意我只想插入不更新语句。
希望我的问题很清楚,让我知道如何才能更好地改进这一点。
答案 0 :(得分:2)
如果我理解正确,您需要一个语句,它将根据seqno插入或更新记录。您可以考虑使用Merge。
答案 1 :(得分:0)
答案 2 :(得分:0)
您可能正在查找for the MERGE
statement,这使您可以执行“Upsert”:在单个语句中插入或更新(尽管您仍需要对锁处理略微小心,请参阅{{3} }
如果您真的想使用INSERT
,我认为没有办法按照您的要求行事。
答案 3 :(得分:0)
它不是合并,数据在同一个表上 你需要一个INSTEAD OF INSERT触发器
在这种情况下,如果seq存在,我选择删除现有行。 如果它不适合你,你可以做一个更新,我只是这样,因为你总是要插入新行
create trigger myTrigger
on myTable
instead of insert
as
begin
declare @seq int
select @seq = seq from inserted
if exists (select 1 from myTable where seq= @seq) begin
delete from myTable where seq=@seq
end
insert into myTable
select * from inserted
end