更新的行我有一个问题,我的更新触发SQL - 删除更新触发
ALTER TRIGGER tr_MyTable
ON MyTable
AFTER UPDATE
AS
BEGIN TRAN
SET NOCOUNT ON;
If Update(column)
Begin
DELETE FROM MyTable WHERE <condition>
End
SET NOCOUNT OFF
COMMIT TRAN
GO
我试图删除行(从MayTable),目前已在updatete的MyTable。但是当我运行触发器时该行不会被删除。是否无法删除当前在更新触发器内更新的行? (删除和更新在同一张桌子上)
谢谢!
编辑:
ALTER TRIGGER tr_MyTable
ON MyTable
AFTER UPDATE
AS
BEGIN TRAN
SET NOCOUNT ON;
SELECT @ID = ID
FROM inserted
If Update(column)
Begin
DELETE FROM MyTable WHERE ID = @ID
End
SET NOCOUNT OFF
COMMIT TRAN
GO
编辑2:
ALTER PROCEDURE sp_Update
(
@ID INTEGER,)
AS
SET NOCOUNT ON
Begin Tran
Update MyTable SET Column = Data where ID = @ID
Commit Tran
SET NOCOUNT OFF
GO
此更新prosedure工作和列被更新。触发器也被触发,并且行删除(print语句)被执行,但不是删除语句。 但是,当我直接在表中更新列时,没有形成触发器,触发器触发,删除语句正常工作。我不使用回滚。
您已经在SQl服务器上做出了最糟糕的触发错误,该错误是假设只有一条记录将被插入或删除表。如果你进行批量插入,这将不起作用。此代码是错误的,必须更改。 – HLGEM 2012-04-02 21:28:00
此外,您应该不要使用sp_开始存储过程,因为这是系统过程使用的过程。你也不应该写一个没有try-catch块的事务,这样它可以被回滚。 – HLGEM 2012-04-02 21:29:25