在一条SQL语句中同时对两个数据库中的不同表进行操作,有什么好的解决方法吗?

如题所述

解决办法:事务和存储过程。
具体操作:
create PROCEDURE [存储过程名]
(
@Title nvarchar(50),
@Content nvarchar(1000),
@Publisher nvarchar(200),
@UserID varchar(10)
)
AS
BEGIN
declare @posid int
SET NOCOUNT ON
begin transaction [事务名称]
insert into Bulletin(....) --向Bulletin表添加记录
if @@error $amp;<amp;$gt; 0="""" begin rollback transaction [事务名称]
select N '添加失败! ' as msg
return(0)
end
set @posid = @@identity --得到BulletinId的值
insert into ButtetinAuth(....) --向ButtetinAuth表添加记录
if @@error $amp;<amp;$gt; 0="""" begin rollback transaction [事务名称]
select N '添加失败! ' as msg
return(0)
end

commit transaction [事务名称]
select N '添加成功! ' as msg
END

"insert 表1;insert 表2 "这种方式是可以,但不能保证同步(如插入第一个表后就停电了,第二个表还没来得及插入,所以就不同步了),要数据同步就要用数据库事务。

private SqlConnection myConn = new SqlConnection(); //连接
private SqlTransaction Transaction = null; //事务
private SqlCommand Cmd = new SqlCommand();

假设myConn已经配置好

事务开始:
try
{
myConn.Open();
Transaction = myConn.BeginTransaction(); //事务开始
Cmd.Transaction = Transaction; //将Cmd指向Transaction事务

string strSQL= "insert 表1 ";
Cmd.CommandText = strSQL; //插入第一个表
Cmd.ExecuteNonQuery();

strSQL= "insert 表2 ";
Cmd.CommandText = strSQL; //插入第一个表
Cmd.ExecuteNonQuery();

Transaction.Commit(); //提交事务

}
catch (Exception e)
{
Transaction.Rollback(); //撇消事务
throw new Exception(e.Message);
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-09

    二个数据库是在一台服务器上,还是两台服务器上。

    如一台服务器上,这个就简单

    直接更新就可以,如下SQL:

    update testset a=1

    update database.test1 set a=1

    或插入操作,删除操作等

    如果是两台服务器,那就需要设置服务器链接;

    SQL 如下:

    服务器Ip+数据库+表,就可以实现操作。

    SQL 如下:192.168.1.100.databasename.dbo.table

     

第2个回答  推荐于2017-10-02
同一服务器?同一数据库系统?
假设 另一个数据库名为'数据库B',并且当然用户对两个数据库都有对应权限
select into [table] from [数据库B].[所有者].[表名]

如果不在同一服务器
select into [table] from opendatasource('sqloledb','data source=服务器名或IP;user id=登陆名;password=口令').数据库B.表名本回答被提问者采纳
第3个回答  2010-12-24
可以啊,在执行的时候,注意两个表的标示要写完整:数据库名.用户名.表名
例如:
insert into db1.yonghu1.bm
select * from db2.yonghu2.bm

db1和db2是数据库名,yonghu1和yonghu2是数据库的用户名,bm是表名。

在一条SQL语句中同时对两个数据库中的不同表进行操作,有什么好的解决方...
1.如果是同一服务器:假设 另一个数据库名为'数据库B',并且当然用户对两个数据库都有对应权限 select into [table] from [数据库B].[所有者].[表名]2.如果不在同一服务器 select into [table] from opendatasource('sqloledb','data source=服务器名或IP;user id=登陆名;password=口令').数...

如何通过一条SQL变更多个分库分表?
一、录入数据源首先,需要将所有包含分库的数据源信息全部录入到NineData平台中。这是实现后续批量变更操作的基础。二、建立库分组在NineData平台中,利用库分组功能来组织和管理不同数据源中的分库。您可以创建一个新的库分组,比如命名为“Poc_Shard_DB”,然后将需要统一变更的分库(如poc_test01、poc...

sql数据库,同时关联两个表,而且第二个表和第三个表关联,怎么搞?
首先声明,根据你的sql理解的话,这种情况可能产生。当a left b 存在数据且c不存在相关数据的话,那么会出现null值,所以并不是出现null值就一定不对。如果你觉得现在的数据明显不对,那么可以把b写前面,整个改为 b right join a left join c (这样应该就是你平常写的那种样子了,反正a left jo...

SQL Server中 两个不同的数据库中的两张表如何关联?
1、首先就是创建几个没有任何关系的表,但是注意,你在将要作为外键表的表上必须使用与将要作为主键表的数据类型相同。2、将能唯一标识的那一行设置为主键,其他表类似。3、接下来添加关系,如下图。4、拖动需要添加的关系,直接看图。5、关联完成,如图。

对比两个MSSQL数据库两个表中不同的内容
首先建立一个外键,然后在与你网页提交的时候执行两个语句,一般在提交数据的时候都会分到一个网页里转换一下数据,把在客户机上填的数据分成两部分,在下面你执行两个插入语句就可以了,把数据分好插入两个不同的表这样就不会出问题了。在着建立一个数据库不就是在这方面应用的吗。

MySQL双表更新如何同时更新两个表中的数据mysql两表更新
一、使用JOIN语句更新两个表中的数据 JOIN是MySQL中用于连接两个或多个表的关键字。在使用JOIN语句更新数据时,需要使用UPDATE语句和SET子句。SET子句用于设置要更新的新值,语法如下:UPDATE table1 JOIN table2 ON table1.column = table2.column SET table1.column1 = new_value1, table2.column2...

两张表在不同的数据库,如何关联查询?
mysql支持多个库中不同表的关联查询,你可以随便链接一个数据库 然后,sql语句为:select * from db1.table1 left join db2.table2 on db1.table1.id = db2.table2.id 只要用数据库名加上"."就能调用相应数据库的数据表了.数据库名.表名 ...

教你MySQL两表联合删除轻松解决数据处理难题mysql两表联合删除_百度知 ...
在使用MySQL数据库时,处理数据的过程中可能会遇到需要对两张或多张表进行联合删除的情况。这时候,不同于单表操作,需要使用到MySQL的关联删除语法,即联合删除。下面我们就来介绍如何通过MySQL联合删除语法来轻松解决数据处理难题。1. 基本语法 DELETE FROM table1,table2 WHERE table1.column1=table2....

sql中一个数据库中的多个表数据如何覆盖其他多个表?
还影响你数据操作。建议取消所有外键,不管你是2个数据库还是一个数据库,你都可以利用select into insert这种语句进行数据复制 当然首先要用delete语句清空目标表 如果同一个库,就直接用语句处理 如果两个库,需要你建立2个数据事务,并同时连接好两个库,语句用using SQLCA1等形式处理 ...

SQL关联两个数据表后,怎么取其中一个数表的数据呢?
1、选中数据库>右键>任务>导入数据。2、点击下一步 。3、需要选择身份验证为使用sql server 身份验证 。4、这里是一样的,不同的是,上一步是选择数据源也就是你要复制的内容, 这里是需要粘贴到那个数据。5、点击下一步:这里选择复制一个或多个表或视图的数据 。6、下一步:选中你需要复制的...

相似回答