还是 两台服务器上的, 2个 SQL Server 数据库?
一台服务器上的两个不同的 SQL Server 数据库 很简单
比如你现在是 USE test1 数据库,建立一个表,叫 TestA
然后 USE test2 数据库,建立一个表,叫 TestB
那么要关联,就是 查询的时候,输入全路径
例如
SELECT
检索字段
FROM
test1dboTestA testa,
test2dboTestB testb
WHERE
关联条件
如果是跨服务器的,需要创建 数据库链接。
链接建立好以后,也是和上面的写法差不多。
你可以分三个来写,分别用来监视insert\delete\update三个(这样写容易完成),我下面写一个,你其它有可以参照下面这个来写
--插入行的情况
CREATE TRIGGER [填入触发器名] ON [dbo][表名]
FOR INSERT
AS
insert [另外一个数据库名][dbo][表名] select from inserted
你也可以参照料我下面这段,写在一起,但比较麻烦,我就不具体按你要求的写了罗
CREATE trigger [数据库Atr_user] on [user]
/ 触发器 在数据库A的user表建立一个名字tr_user的触发器 /
for update,insert,delete
/监视 修改 插入 删除/
as
if not exists (select from deleted)
/ 如果deleted表为空,那么 /
insert 数据库B[user](username,userpass,landtime) select username,password,lastlogin from inserted
/ 将inserted表(就是对于触发器来说刚刚被插入的集合)插入到Buser /
else if not exists (select from inserted)--删除
/ 否则 如果 inserted集合为空 /
delete 数据库B[user] where id in (select userid from deleted)
/ 那么删除Buser下id是deleted集合中出现的id 这里用了in /
else--更新
update [user]
set
[user]username=iusername,
[user]userpass=ipassword
from 数据库B[user] as [user],
inserted as i
where [user]id=iuserid
/ update就很明显了,凡是updated的都来更新,保持一样就可以了 /
alter table 数据库B[user] ENABLE TRIGGER [数据库Btr_user]
查数据字典
select TCOLUMN_NAME
from ALL_TAB_COLUMNS T
where TTABLE_NAME = 'A表'
minus
select TCOLUMN_NAME
from ALL_TAB_COLUMNS T
where TTABLE_NAME = 'B表'
这样就找到了DBF_1比DBF_2多出来的列
要抽数据就直接写:
select 查到的几列 from DBF_1就行了
我给你的sql贴上去跑就行了啊,怎么还不清楚么?
1如果是同一服务器:
假设 另一个数据库名为'数据库B',并且当然用户对两个数据库都有对应权限
select into [table] from [数据库B][所有者][表名]
2如果不在同一服务器
select into [table] from opendatasource('sqloledb','data source=服务器名或IP;user id=登陆名;password=口令')数据库B表名
在执行的时候,要注意两个表的标示要写完整:数据库名用户名表名
例如:
insert into db1yonghu1bm
select from db2yonghu2bm
db1和db2是数据库名,yonghu1和yonghu2是数据库的用户名,bm是表名。
以上就是关于SQL Server中 两个不同的数据库中的两张表如何关联全部的内容,包括:SQL Server中 两个不同的数据库中的两张表如何关联、在SQL中 如何实现不同数据库的两张表的同步、SQL 问题 不同数据库表中字段的比对等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)