CREATE TRIGGER 触发器名 ON 表名1
INSTEAD OF UPDATE,INSERT,DELETE --有文本字段更新
AS
BEGIN
--禁用目标表触发器
ALTER TABLE 库2..表名2 DISABLE TRIGGER ALLSET NOCOUNT ON
IF NOT EXISTS (SELECT * FROM DELETED) --插入
BEGIN
INSERT INTO J库2..表名2(字段...)
SELECT 字段.. INSERTED I
WHERE NOT EXISTS (SELECT 1 FROM J库2..表名2 B WHERE B.关联字段=I.关联字段)
END
ELSE IF NOT EXISTS (SELECT * FROM INSERTED)--删除
BEGIN
DELETE A
FROM J库2..表名2 A INNER JOIN DELETED D
ON B.关联字段=D.关联字段
END
ELSE --更新
BEGIN
INSERT INTO J库2..表名2(字段...)
SELECT 字段.. FROM INSERTED I
WHERE NOT EXISTS (SELECT 1 FROM J库2..表名2 B WHERE B.关联字段=I.关联字段) UPDATE A
SET a.更新字段=i.更新字段
FROM J库2..表名2 A INNER JOIN INSERTED I
ON B.关联字段=I.关联字段 END
SET NOCOUNT OFF
--重新启用目标表触发器
ALTER TABLE J库2..表名2 ENABLE TRIGGER ALLEND
--先实现功能,对一个表的同步,更新、插入、删除 后,目标表数据与源表数据保持一致。
--目标表有触发器
--该触发器是否存在问题?
--数据量大后,同步有什么问题? 该如何解决??
INSTEAD OF UPDATE,INSERT,DELETE --有文本字段更新
AS
BEGIN
--禁用目标表触发器
ALTER TABLE 库2..表名2 DISABLE TRIGGER ALLSET NOCOUNT ON
IF NOT EXISTS (SELECT * FROM DELETED) --插入
BEGIN
INSERT INTO J库2..表名2(字段...)
SELECT 字段.. INSERTED I
WHERE NOT EXISTS (SELECT 1 FROM J库2..表名2 B WHERE B.关联字段=I.关联字段)
END
ELSE IF NOT EXISTS (SELECT * FROM INSERTED)--删除
BEGIN
DELETE A
FROM J库2..表名2 A INNER JOIN DELETED D
ON B.关联字段=D.关联字段
END
ELSE --更新
BEGIN
INSERT INTO J库2..表名2(字段...)
SELECT 字段.. FROM INSERTED I
WHERE NOT EXISTS (SELECT 1 FROM J库2..表名2 B WHERE B.关联字段=I.关联字段) UPDATE A
SET a.更新字段=i.更新字段
FROM J库2..表名2 A INNER JOIN INSERTED I
ON B.关联字段=I.关联字段 END
SET NOCOUNT OFF
--重新启用目标表触发器
ALTER TABLE J库2..表名2 ENABLE TRIGGER ALLEND
--先实现功能,对一个表的同步,更新、插入、删除 后,目标表数据与源表数据保持一致。
--目标表有触发器
--该触发器是否存在问题?
--数据量大后,同步有什么问题? 该如何解决??
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货