WiX*_*XeY 10 sql sql-server sql-server-2008
我正在努力SQL Server 2008R2,我有下表
ID Name date
1 XYZ 2010
2 ABC 2011
3 VBL 2010
Run Code Online (Sandbox Code Playgroud)
现在我想阻止插入,如果我有一个数据虽然ID不同但数据存在
ID Name date
4 ABC 2011
Run Code Online (Sandbox Code Playgroud)
请指导我如何编写此触发器.
Roc*_*lan 20
像这样的东西:
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
Run Code Online (Sandbox Code Playgroud)
这只是插入,你可能也想考虑更新.
更新
一种更简单的方法是在表上创建一个唯一约束,这也将强制执行更新,并消除对触发器的需要.做就是了:
ALTER TABLE [dbo].[TableName]
ADD CONSTRAINT [UQ_ID_Name_Date] UNIQUE NONCLUSTERED
(
[Name], [Date]
)
Run Code Online (Sandbox Code Playgroud)
然后你会做生意.
| 归档时间: |
|
| 查看次数: |
38384 次 |
| 最近记录: |