用触发器能实现吗?会不会由于在触发器里更改了数据库而引起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'"
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'"
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