如果插入的值与唯一约束冲突,则 SQL 触发器在插入时更新字段
Posted
技术标签:
【中文标题】如果插入的值与唯一约束冲突,则 SQL 触发器在插入时更新字段【英文标题】:SQL Trigger to update a field on insert if the inserted value conflicts with the unique constraint 【发布时间】:2011-04-09 11:56:06 【问题描述】:我有一个名为 Albums 的表,其中包含一个字段 IsDeleted 和一个字段“名称”。 名称是唯一键。我的问题是:
如果将 IsDeleted 设置为 True 并且用户将相同的名称插入到表中,我可以创建一个将 IsDeleted 更新为 False 的触发器吗?
当然,插入语句应该以某种方式更改为更新语句。
我正在使用 MSSQL 2008,我对触发器和 SQL 很陌生
感谢您的帮助!
【问题讨论】:
【参考方案1】:是的,您可以使用instead of
触发器来执行此操作。示例:
create trigger albums_ins_trig on albums instead of insert as begin
-- update albums which already exist and are being inserted again
update albums set IsDeleted=0 where IsDeleted=1
and exists (select * from inserted where albums.name=inserted.name)
-- insert new albums
insert into albums select * from inserted
where not exists (select * from albums where albums.id=inserted.id)
end
【讨论】:
以上是关于如果插入的值与唯一约束冲突,则 SQL 触发器在插入时更新字段的主要内容,如果未能解决你的问题,请参考以下文章