SQL用触发器如何实现两个表在两个数据库之间双向同步,可以举个例子给

SQL用触发器如何实现两个表在两个数据库之间双向同步,可以举个例子给我吗?

create TRIGGER [dbo].[tr_tb_erp_make_Pack_insert]
ON [dbo].[tb_erp_make_Pack]
FOR INSERT
AS
BEGIN
SET XACT_ABORT ON
SET NOCOUNT ON
declare @out_Flag int=0
declare @out_Rtn varchar(40)=''
declare @smsg nvarchar(400)

DECLARE @v_barCode VARCHAR(20)
DECLARE @v_cInvCode NVARCHAR(20)
DECLARE @v_packID INT
DECLARE @v_packDate DATETIME
DECLARE @v_userID INT

begin tran

DECLARE Cur CURSOR FOR
SELECT barCode,cInvCode,packID,packDate,userID FROM inserted
OPEN Cur

FETCH NEXT FROM Cur INTO @v_barCode,@v_cInvCode,@v_packID,@v_packDate,@v_userID
WHILE @@FETCH_STATUS=0
BEGIN
SET @out_Flag = 0
SET @out_Rtn='添加成功!'

IF EXISTS(SELECT 1 FROM tb_erp_make_barCode WHERE barCode=@v_barCode)
BEGIN
UPDATE dbo.tb_erp_make_barCode SET cInvCode=@v_cInvCode,packID=@v_packID,packDate=@v_packDate,vFlag=0 WHERE barCode=@v_barCode

IF @@error <> 0
BEGIN
SET @out_Flag=1
SET @out_Rtn='触发器修改(UPDATE)错误!'
SET @smsg='错误:'+@out_Rtn
ROLLBACK TRAN
RAISERROR (@smsg,11,1)
RETURN
END
END
ELSE
BEGIN
INSERT INTO dbo.tb_erp_make_barCode
(
barCode ,packID ,packDate ,cInvCode
)
VALUES (
@v_barCode ,@v_packID ,GETDATE() ,@v_cInvCode
)
IF @@error <> 0
BEGIN
SET @out_Flag=2
SET @out_Rtn='触发器新增(INSERT)错误!'
SET @smsg='错误:'+@out_Rtn
ROLLBACK TRAN
RAISERROR (@smsg,11,1)
RETURN
END
END

FETCH NEXT FROM Cur INTO @v_barCode,@v_cInvCode,@v_packID,@v_packDate,@v_userID
END
CLOSE Cur
DEALLOCATE Cur

COMMIT TRAN
RETURN

END追问

双向同步是不是两个表都要建触发器?

追答

没办法两个都建

追问

两个都建了会出错

温馨提示:内容为网友见解,仅供参考
无其他回答

sql如何将两个表里的数据同步
触发器还可以针对表的 insert,delete, update 操作时安装要求执行数据同步的操作,即可实现两个表里的数据同步。

oracle 怎样同步两张大表数据,用sql语句实现
1、写个触发器,在a表中insert数据的时候同时在b表中insert。2、写个存储过程,写两个insert语句,将数据同时insert到a表和b表中,在程序中调用存储过程。

怎么实现两个数据库的同步
复制监视器->发布服务器(zehuadb)->sz:sz->选择zlp:sz(类型强制)->鼠标右键->启动同步处理 如果没有错误标志(红色叉),恭喜您配置成功 6:测试数据 在服务器执行: 选择一个表,执行如下sql: insert into wq_newsgroup_s select '测试成功',5 复制监视器->发布服务器(zehuadb)->sz:sz->快照->启动代理程...

sql中如何设置两个表中的列值相同
将两张表关联起来,将第一张表中的c设为第二张表的外键,这样就能够使第一张表中的c列变化关联着第二张表的数据也跟着变化。

实现MySQL数据同步如何让两个表相互同步mysql两表同步数据
1. 使用触发器进行同步 MySQL支持使用触发器来自动执行一些操作,例如在一个表中插入数据时,可以在触发器中设定另一个表自动插入相同的数据。使用触发器可以实现数据的自动同步,但对于大型数据库来说,这种方法可能会影响系统性能。2. 使用存储过程进行同步 使用存储过程可以通过一系列操作实现数据的自动...

请问sqlserver中的两个表怎么进行关联
可以选择触发器或存储过程。如果两个表字段相同可以用触发器:CREATE TRIGGER trigger_AToB on A INSTEAD OF INSERT AS BEGIN INSERT INTO A(a,b,c) SELECT a,b,c FROM inserted INSERT INTO B(a,b,c) SELECT a,b,c FROM inserted END GO INSERT INTO a(a,b,c)VALUES('aaa','aaa','...

sql server触发器 两个数据库表同步更新
CREATE TRIGGER trigger_cgjh_insert ON [dbo].[cg_cgjh_bt]FOR INSERT AS BEGIN insert into openrowset('sqloledb','192.168.0.100';'sa';'10060','select * from knss2009.dbo.yw_kck') select * from yw_kck END 给你写过例子可以实现跨服务器跨库的语句吧,你那种方法没用过 你在...

SQL语句中两个表的连接
1、打开数据库管理工具,在数据库中新建两个表用于测试,这里,两个表的表结构要一样,分别建立TEST 和 TEST1。2、开启新的SQL查询窗口,创建一个存储过程。意思是将insert到TEST中的数据插入到TEST1中。3、单击‘执行’,一个名字为‘T’的触发就新建完成了。4、展开表结构,我们也能看见刚才新建的...

sql数据库中,怎么使两个表中,有一个数据是一样的,然后修改一个,另一...
可以使用多种方式实现:1: 同时更新两种表 update A set 字段=XX where 条件 update B set 字段=XX where 条件 2:使用触发器 在A表建立触发器 更新B表信息 create trigger on A for update update B set 字段=XX where 条件(使用inserted ,deleted表)--- 调用直接使用更新语句更新A表即可 ...

SQL如何将两个不同数据库同一张表的数据同步更新
两个不同数据库同一张表,是表名相同?只要你要更新的表加上数据库名,下面是例子,你自己在触发器里仿照一下 UPDATE Northwind.dbo.employees SET lastName = '' WHERE lastName = ''

相似回答