gpt4 book ai didi

sql - 触发防止插入两列重复数据

转载 作者:行者123 更新时间:2023-12-02 10:00:06 26 4
gpt4 key购买 nike

我正在使用SQL Server 2008R2,我有下表

ID     Name     date
1 XYZ 2010
2 ABC 2011
3 VBL 2010

现在,如果我有数据,虽然 ID 不同但数据存在,但我想阻止插入

 ID    Name     date
4 ABC 2011

请指导我应该如何编写这个触发器。

最佳答案

类似这样的事情:

CREATE TRIGGER MyTrigger ON dbo.MyTable
AFTER INSERT
AS

if exists ( select * from table t
inner join inserted i on i.name=t.name and i.date=t.date and i.id <> t.id)
begin
rollback
RAISERROR ('Duplicate Data', 16, 1);
end
go

这仅用于插入,您可能也想考虑更新。

更新

一种更简单的方法是在表上创建一个唯一约束,这也将强制更新它并消除对触发器的需要。只要这样做:

ALTER TABLE [dbo].[TableName]    
ADD CONSTRAINT [UQ_ID_Name_Date] UNIQUE NONCLUSTERED
(
[Name], [Date]
)

然后你就可以开展业务了。

关于sql - 触发防止插入两列重复数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18502802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com