当前位置:首页 » 编程语言 » sql数据库表与表的同步

sql数据库表与表的同步

发布时间: 2022-09-04 20:03:01

‘壹’ sql如何将两个表里的数据同步

可以通过sql触发器来实现。

例下列触发器代码 :

createtriggertri_kszb_insert
onygpx_kszb--操作的表名
forinsert--给表插入一条数据的时候触发
as
declare@kssjdatetime
declare@sqbhchar(40)
select@kssj=kssj,@sqbh=sqbhfrominserted--把插入的数据的保存到变量
insertintoygpx_kszb2values(@kssj,@sqbh)--同步插入到另一表

以上触发器可以实现,在表ygpx_kszb中插入数据,同步插入到表ygpx_kszb2 。

触发器还可以针对表的insert,delete, update 操作时安装要求执行数据同步的操作,即可实现两个表里的数据同步。

‘贰’ 如何实现两个SQL数据库的同步操作

sql同步使用dblink同步数据。
具体参考实例:
1、在win下创建linux的DBLINK
a.查看linux下的tnsnames.ora文件
[oracle@myrac1 admin]$ cat tnsnames.ora
# tnsnames.ora Network Configuration File: /s01/app/oracle/proct/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
HJJ =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myrac1.oracle.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = hjj)
)
)
b.创建dblink
SQL> create database link win_lin_link connect to hjj identified by xxxx
2 using '(DESCRIPTION =
3 (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.171)(PORT = 1521))
4 (CONNECT_DATA =
5 (SERVER = DEDICATED)
6 (SERVICE_NAME = hjj)
7 )
8 )'
9 /
Database link created.
2.在win下创建trigger
SQL> create or replace trigger trig_win_emp
2 after insert on emp
3 for each row
4 begin
5 insert into emp@win_lin_link values(:new.empno,:new.empname,:new.empsalary);
6 end;
7 /
Trigger created.
3.测试
4.结果
win下插入数据
SQL> insert into emp values('E001','LYN',2300);
1 row created.
SQL>COMMIT;
Commit complete.
SQL> select *from emp;
EMPNO EMPNAME EMPSALARY
---------------------------------------- ---------------------------------------- ----------
E001 LYN 2300
SQL> select * from emp@win_lin_link;
EMPNO EMPNAME EMPSALARY
---------------------------------------- ---------------------------------------- ----------
E001 LYN 2300
linux下查看数据
SQL> select * from emp;
EMPNO EMPNAME EMPSALARY
-------------------- -------------------- ----------
E001 LYN 2300

‘叁’ sql中如何实现两张表的数据同步

用触发器,在增加,删除,修改时操作另一个表,使其数据和该表同步;

‘肆’ MSSQL 同一服务器不同数据库间表数据同步,有什么好的方法,分两种吧,即时的和延迟的

同一服务器的不同数据库间可以直接访问,比如两个数据库DB1,DB2
当前连接的是DB1,可以用 select * from db2.dbo.table1 来访问DB2的表。 其中dbo是数据库所有者,默认为dbo。 还需要连接DB1的用户对两个数据库都有权限。

关于同步,延迟的方法比较单一,做一个存储,加在作业里,定时调用即可。
即时的可以分两种思路,第一可以用触发器的方式,在db1中需要同步的表里,创建触发器,当有数据操作的时候触发,同步数据。
第二种思路,是前台事务操作db1的数据表的时候,同时写db2的数据表,两个操作放在同一个事务中。
两种方法各有好处,个人推荐第一种。
以上思路基于sql server 2005,之后的版本了解不够多,不知道有没有出什么更好的工具啥的。

‘伍’ sql数据库中如何做到表与表之间字段的同步更新删除

使用外键!!将要同步的2个表进内的字段进行连接。前提要将两个表中的字段设为主键或唯一建。详情请查询书中的关于外键的描述!!

‘陆’ SQL 如何使两张表同步

begin
for ind in (select distinct id
from A
where biao=0)
loop
insert into B values(ind.id,0);
update A
set biao=0
where id = ind.id;
commit;
end loop;
end;
/

‘柒’ sql如何将两个表里的数据同步

使用 merge into。

‘捌’ sql2000 在同一个数据库一张表的修改,同步到另一张表。

可以建触发器来实现:
更新
Create
Trigger
truTable1
On
表1
for
Update
-------------------------------------------------------
--Memo
:
临时写写的,给你作个Sample。没有调试阿。
-------------------------------------------------------
As
Update
表2
Set
表2.Name=i.username
,表2.CardID=i.usercardno
From
表2
,
Deleted
d
,Inserted
i
表2.CardID=d.usercardno
and
d.userstate
=
'0'
删除
Create
trigger
trdTable1
On
表1
for
Delete
-------------------------------------------------------
--Memo
:
临时写写的,给你作个Sample。没有调试阿。
-------------------------------------------------------
As
Delete
表2
From
表2,
Deleted
d
Where
表2.CardID=d.usercardno
and
d.userstate
=
'0'
【有疑问可以HI我,或追问,但请不要关闭问题,谢谢!】

‘玖’ 在SQL中 如何实现不同数据库的两张表的同步

你可以分三个来写,分别用来监视insert\delete\update三个(这样写容易完成),我下面写一个,你其它有可以参照下面这个来写
--插入行的情况
CREATE TRIGGER [填入触发器名] ON [dbo].[表名]
FOR INSERT
AS

insert [另外一个数据库名].[dbo].[表名] select * from inserted

你也可以参照料我下面这段,写在一起,但比较麻烦,我就不具体按你要求的写了罗.
CREATE trigger [数据库A.tr_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表(就是对于触发器来说刚刚被插入的集合)插入到B.user */
else if not exists (select * from inserted)--删除
/* 否则 如果 inserted集合为空 */
delete 数据库B..[user] where id in (select userid from deleted)
/* 那么删除B.user下id是deleted集合中出现的id 这里用了in */
else--更新
update [user]
set
[user].username=i.username,
[user].userpass=i.password
from 数据库B..[user] as [user],
inserted as i
where [user].id=i.userid
/* update就很明显了,凡是updated的都来更新,保持一样就可以了 */
alter table 数据库B..[user] ENABLE TRIGGER [数据库B.tr_user]

‘拾’ SQL两个数据库间的数据同步

建议使用ETL工具实现,你可以使用kettle,可以实现数据库之间的数据同步。完全可视化操作。
你可以网络一下资料。

热点内容
php函数默认值 发布:2025-01-15 07:34:31 浏览:238
编译应用后apk无法打开 发布:2025-01-15 07:33:45 浏览:437
lc脚本编辑器 发布:2025-01-15 07:18:59 浏览:528
追剧脚本 发布:2025-01-15 07:00:39 浏览:446
c语言字符串库函数 发布:2025-01-15 06:54:49 浏览:526
c语言的工作 发布:2025-01-15 06:50:50 浏览:521
口语交际访问 发布:2025-01-15 06:44:13 浏览:329
编程少儿学习 发布:2025-01-15 06:39:03 浏览:504
服务器搭建怎么设置 发布:2025-01-15 06:39:01 浏览:152
格鲁尔要什么配置 发布:2025-01-15 06:26:56 浏览:857