【发布时间】:2013-05-06 15:18:42
【问题描述】:
我想在执行删除查询时使用触发器删除 SELECT 中的所有行,而不删除最后返回的行。
此触发器不起作用,因此非常感谢任何帮助。
CREATE TRIGGER TR_StergereOfertaSpeciala
ON OferteSpeciale
INSTEAD OF DELETE
AS
DECLARE @nr INTEGER;
IF (EXISTS(SELECT * FROM DELETED))
BEGIN
SET @nr = (SELECT COUNT(*) FROM DELETED);
DELETE FROM (
SELECT TOP(@nr - 1)* FROM OferteSpeciale
INNER JOIN DELETED ON OferteSpeciale.codP = Deleted.codP
AND OferteSpeciale.codM = Deleted.codM
AND OferteSpeciale.dela = Deleted.dela)
END
【问题讨论】:
-
你没有
ORDER BY,如何确定“最后一行”? -
“触发器不起作用”是什么意思?它现在做了什么,或者它给出了什么错误?
-
另外,...
{codp, codM, dela}是OferteSpeciale表上的唯一键或主键吗? -
是的 codP、codM 和 dela 是唯一的主键。触发器给出了一个合成错误。
标签: sql sql-server tsql triggers