【发布时间】:2014-06-10 17:09:26
【问题描述】:
下面的触发器应该在为产品更新 Product OrderNo 时从ProductOrders 表中删除行。这在前端工作正常,但如果有人在后端进行大规模更新(更新多个订单号),我需要一种方法来为所有产品订单号更新运行此触发器。
CREATE TRIGGER [trgAfterOrderNoUpdate] ON [Products]
FOR UPDATE
AS
DECLARE @id uniqueidentifier
SELECT @id = i.ID
FROM inserted i
if UPDATE(OrderNo)
DELETE FROM ProductOrders
WHERE ID= @id
【问题讨论】:
-
永远不要考虑在触发器中使用光标。
-
@HLGEM - 为什么在触发器中使用光标是一件坏事?我是触发器的新手,所以请原谅这个愚蠢的问题,虽然没有这样的事情:)
-
因为游标很慢,您可以在处理百万条记录更新时锁定所有其他用户,这需要几秒钟,而现在需要 18 小时。
标签: sql-server tsql triggers cursor