日期:2014-05-20  浏览次数:21005 次

如何同时向2个数据库中插入数据?
求教,如何使用事务向不同数据库中插入数据?数据库为ORACLE

------解决方案--------------------
使用Enterprise Libray:
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbcomm1 = db.GetSqlStringCommand( "insert into issue1 () values () ");
DbCommand dbcomm2 = db.GetSqlStringCommand( "insert into issue2 () values() ");

using (DbConnection conn = db.CreateConnection())
{
//打开连接
conn.Open();
//创建事务
DbTransaction trans = conn.BeginTransaction();

try
{
db.ExecuteNonQuery(dbcomm1);

db.ExecuteNonQuery(dbcomm2);

//都执行成功则提交事务
trans.Commit();
}
catch(Exception)
{
//发生异常,事务回滚
trans.Rollback();
}
//关闭连接
conn.Close();

------解决方案--------------------
在A-Oracle服务器上建立B服务器的连接,然后当A服务器插入数据的时候通过此连接对B数据库进行操作。
------解决方案--------------------
两条插入语句同时执行,若有一条执行不成功,回滚。
------解决方案--------------------
不知道,帮顶
------解决方案--------------------
用触发器不行吗
------解决方案--------------------
在A服务器上建立B服务器的连接,然后同时插入即可
如 a表在A服务器,b表在B服务器
B服务器在A服务器上的连接名为@lgl
那么在A服务器上插入这两张表:
insert into a (...) values (...)
insert into b@lgl(...) values (...)
------解决方案--------------------
估计只有在一个表的触发器里,写另外一个数据库的表了,
写入失败就回滚。
------解决方案--------------------
up
------解决方案--------------------
为什么要在程序里面写呢
在一个数据库里面写个存储过程不就可以了吗

create proc p_XXX
as
begin tran
insert into table1()values()
insert into db2.dbo.table2()values();
commit tran