两个不同服务器上有两个相同的数据库,我想让某个表同步,这样我就做了两个触发器,现在就总是跳“其他会话正在使用事务的上下文。”这个问题,谁有解啊
看你的意思 好像是两个数据库中都有相同的表(假设叫 A1, A2), 然后每个表都有Insert Trigger, 这样向其中一个表 A1插入数据, 这个表的trigger会被触发 然后向 A2 插数据, 而同时A2 的触发器也被触发, 它会试图向A1再插入
形成了trigger loop
网上的解决办法 在两个trigger中都加入 条件判断, 如果发现已经在trigger context 中 就不做任何操作
CREATE TRIGGER tr_Table1_INSERT ON Table1 FOR UPDATE AS DECLARE @ctx VARBINARY(128) SELECT @ctx = CONTEXT_INFO() IF @ctx = 0xFF RETURN SET @ctx = 0xFF -- Trigger logic goes here