********sybase 触发器中对两个数据库操作的问题**********

时间:2020-12-18 05:06:21
功能:往db1的table1里插入记录时,也往db2里的table1里插入一条相应的记录


用触发器能实现吗?会不会由于在触发器里更改了数据库而引起db1的table1的数据丢失(记录插不进去)?



能否举例说明?

5 个解决方案

#1


其实用transaction 在系统过程中实现,结果也一样呀, 不一定非用触发器

#2


说具体点

#3


可以创建两个transaction


sqlservertrans = CREATE transaction
sqlservertrans.DBMS = "O84 Oracle8/8i (8.x.4+)"
sqlservertrans.LogPass ="*****"(密码)
sqlservertrans.LogId = "user"(user)
sqlservertrans.ServerName ="oracle"(服务器名称)
sqlservertrans.AutoCommit = False
sqlservertrans.DBParm = "PBCatalogOwner='user'"
connect using sqlservertrans;
if sqlservertrans.sqlcode<>0 then
   MessageBox ("连接ORACLE服务器失败", sqlservertrans.sqlerrtext)
disconnect using sqlservertrans;   
   Destroy  sqlservertrans
   
end if
/*创建第二个*/
sqlca.DBMS       = 'SYC Sybase System 10 CTLIB'
sqlca.database   = ''
sqlca.logid      = ''
sqlca.logpass    = ''
sqlca.servername = 'server'
sqlca.dbparm     = "host='hh',appname='PB8.0_1'"

#4


最好还是在程序里实现吧。如果非要在数据库级实现,你可以做一个外部表试一下。
楼上是让你在程序里建两个连接,同时操作两个表。

#5


在触发器中加db名称,如select mydb..tablename

#1


其实用transaction 在系统过程中实现,结果也一样呀, 不一定非用触发器

#2


说具体点

#3


可以创建两个transaction


sqlservertrans = CREATE transaction
sqlservertrans.DBMS = "O84 Oracle8/8i (8.x.4+)"
sqlservertrans.LogPass ="*****"(密码)
sqlservertrans.LogId = "user"(user)
sqlservertrans.ServerName ="oracle"(服务器名称)
sqlservertrans.AutoCommit = False
sqlservertrans.DBParm = "PBCatalogOwner='user'"
connect using sqlservertrans;
if sqlservertrans.sqlcode<>0 then
   MessageBox ("连接ORACLE服务器失败", sqlservertrans.sqlerrtext)
disconnect using sqlservertrans;   
   Destroy  sqlservertrans
   
end if
/*创建第二个*/
sqlca.DBMS       = 'SYC Sybase System 10 CTLIB'
sqlca.database   = ''
sqlca.logid      = ''
sqlca.logpass    = ''
sqlca.servername = 'server'
sqlca.dbparm     = "host='hh',appname='PB8.0_1'"

#4


最好还是在程序里实现吧。如果非要在数据库级实现,你可以做一个外部表试一下。
楼上是让你在程序里建两个连接,同时操作两个表。

#5


在触发器中加db名称,如select mydb..tablename