【发布时间】:2017-08-04 06:21:24
【问题描述】:
我写了一个触发器,如果在两列中发现重复记录,它会阻止重复记录。
如何在导致重复的消息中抛出行。 我正在尝试在错误消息中显示这些错误行。
代码:
CREATE TRIGGER [dbo].[BlockDuplicates]
ON [dbo].[table]
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
IF NOT EXISTS (SELECT 1 FROM inserted AS i
INNER JOIN dbo.WSP_INPUT_ACTV AS t
ON i.GoogleID = t.GoogleID
AND i.SKU = t.SKU
WHERE i.FleetID <> 008
)
BEGIN
INSERT dbo.WSP_INPUT_ACTV (COL1,COL2,COL3)
SELECT COL1,COL2,COL3 FROM inserted;
END
ELSE
BEGIN
PRINT 'INSERTION ABORTED';
END
END
【问题讨论】:
-
添加更多关于预期输出的细节
-
您为什么要为此使用触发器?因为这件事你可以在你的插入存储过程中做。
-
这可能会使非重复记录也不会因为批处理中存在一个重复而插入
-
UNIQUE约束可以应用于多个列。此处无需编写触发器。 -
正是这不允许插入非重复,我试图在打印语句中显示错误行
标签: sql-server tsql database-trigger