在我们的实时/生产数据库中,我正在尝试向表中添加触发器,但没有成功。我尝试了几次,但是创建触发器语句完成需要 30 多分钟,我已经取消了它。
该表是一个经常由几个不同的进程读取/写入的表。我已禁用更新表的计划作业,并在表上的活动较少时尝试,但我无法停止访问表的所有内容。
我不相信 create trigger 语句本身有问题。create trigger 语句在测试环境中成功且快速,并且当向表中插入/更新行时,触发器可以正常工作。虽然当我在测试数据库上创建触发器时,表上没有负载并且它的行数要少得多,这与实时/生产数据库上的不同(100 对 13,000,000+)。
这是我试图运行的创建触发器语句
CREATE TRIGGER [OnItem_Updated]
ON [Item]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
IF update(State)
BEGIN
/* do some stuff including for each row updated call a stored
procedure that increments a value in table based on the
UserId of the updated row */
END
END
在更新行或有很多行时在表上创建触发器会不会有问题?
在 SQLServer 中,触发器的创建默认启用。是否可以创建默认禁用的触发器?
还有其他想法吗?