我在表上有一个触发器,如果满足某个条件,则需要执行存储过程。有没有一种简单的方法可以不依赖于创建表来存储数据或使用游标?
作为一个例子,我有tableA:
tableA
col1 INT,
col2 INT
在更新时,如果col2已更新,则需要执行存储过程并将col1作为参数传递。
所以它会像
CASE WHEN i.col2 <> d.col2 THEN EXEC sp_MySproc i.col1
FROM inserted i
INNER JOIN deleted d
on i.col1 = d.col1
数据库和所有触发器都是为一次更新一个记录/行而设计的,我正在尝试慢慢进行一些修改,以使其基于记录集而不是单行。
合并功能会对此有所帮助吗?
由于
答案 0 :(得分:0)
如果使用Sybase ASE,可以尝试在触发器上使用构造:
if update (column_name)
如果您可以重构SP - 您可以将数据卸载到临时表(或物理表)中,并从触发器执行过程,这将使用此数据。