如何实现两个数据库之间表的同步更新(增,删,改)

2023-11-17

这里如果知道触发器的使用方法的话,解决这个问题就很简单了。

  • 触发器,就是⼀种特殊的存储过程。触发器和存储过程⼀样是⼀个能够完成特定功能、存储在数据库服务器上的SQL⽚段,但是触发器⽆需调⽤,当对数据表中的数据执⾏DML操作时⾃动触发这个SQL⽚段的执⾏,⽆需⼿动调⽤。
  • 在MySQL,只有执⾏insert\delete\update操作才能触发触发器的执⾏。

所以我们使用触发器来实现两个数据库之间表的同步更新(增,删,改)

我所用的软件是Navicate,实现方法同上一篇文章如何实现数据库两表之间的数据同步更新(增,删,改)原理相同,前者只是实现同一数据库间两表的同步更新,而后者是实现两个不同数据库之间两表的同步更新。只需将原来的表前加上数据库名(如 :将students【表名】改为db_test【数据库名】.students【表名】)

完整代码如下,先创建两个测试的数据库以及表

#创建数据库
create database db_test6;
#使用数据库
use db_test6;
#创建学生表

CREATE TABLE `students` (
  `stu_num` char(4) NOT NULL,
  `stu_name` varchar(20) NOT NULL,
  `stu_gender` char(2) NOT NULL,
  `stu_age` int NOT NULL,
  PRIMARY KEY (`stu_num`)
)
#创建需要同步的数据库
create database db_test7;
#使用数据库
use db_test7;
#创建学生表
#创建所要同步的学生表(字段相同)
CREATE TABLE `students` (
  `stuNum` char(4) NOT NULL,
  `stuName` varchar(20) NOT NULL,
  `stuGender` char(2) NOT NULL,
  `stuAage` int NOT NULL,
  PRIMARY KEY (`stu_num`)
) 

然后创建触发器

#创建触发器trigger_test实现数据库db_test6中students表增加内容时数据库db_test7 中students表同步
create trigger trigger_test3 after insert on students for each row

	insert into db_test7.students(stuNum,stuName,stuGender,stuAge) 
	values(new.stu_num,new.stu_name,new.stu_gender,new.stu_age); 

#测试增加数据库db_test6中students内容
insert into students(stu_num,stu_name,stu_gender,stu_age)
	values("1002","张三","男",20); 

#创建触发器trigger_test实现数据库db_test6中students表删除内容时数据库db_test7 中students表同步
create trigger trigger_test4 after delete on students for each row
begin
	delete from db_test7.students where stuNum=old.stu_num ;
end	
	
	#测试删除数据库db_test6中students中的内容
	delete from students where stu_num="1002";
	
	#创建触发器trigger_test实现students修改内容时studentstest同步
	create trigger trigger_test5 after update on students for each row
begin
	update db_test7.students set stuName=new.stu_name,stuGender=new.stu_gender,stuAge=new.stu_age where stuNum=old.stu_num ;
end

	#测试更新数据库db_test6中students中的内容
	update students set stu_name="lisi",stu_gender="女",stu_age=21 where stu_num=1002;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现两个数据库之间表的同步更新(增,删,改) 的相关文章

  • Mysql获取特定表的最后一个id

    我必须从特定的插入表中获取最后的插入 ID 可以说我有这个代码 INSERT INTO blahblah test1 test 2 VALUES test1 test2 INSERT INTO blahblah2 test1 test 2
  • 数据库中的持久日期不等于检索日期

    我有一个具有 Date 属性的简单实体类 此属性对应于 MySQL 日期时间列 Entity public class Entity Column name start date Temporal TemporalType TIMESTAM
  • SQL Server:触发器如何读取插入、更新、删除的值

    我在一张表中有触发器并且想阅读UserId插入 更新或删除行时的值 怎么做 下面的代码不起作用 我收到错误UPDATED ALTER TRIGGER dbo UpdateUserCreditsLeft ON dbo Order AFTER
  • 对带有空白 NVARCHAR 或 NULL 检查的 VARCHAR 索引进行 Count(*) 会导致返回的行数加倍

    我有一张桌子 上面有VARCHAR列及其上的索引 每当一个SELECT COUNT 是在这张表上完成的 该表检查了COLUMN N OR COLUMN IS NULL它返回双倍的行数 SELECT 与相同的where子句将返回正确的记录数
  • 为什么我的浮点数大于 1 时在 MYSQL 中存储为 .9999?

    我将进程时间作为 float 4 4 存储在 MySQL 数据库中 start time microtime TRUE things happen in my script end time microtime TRUE process t
  • 在PHP中,如何在表格中显示数组内容

    如果我在 MySQL 客户端中进行选择 我将得到如下所示的输出 mysql gt select FROM group LIMIT 2 group id group supergroup id group deletable group la
  • SELECT DISTINCT HAVING 计算唯一条件

    我已经搜索过这个问题的答案 但找不到如何根据条件获取这个不同的记录集 我有一个包含以下示例数据的表 Type Color Location Supplier Apple Green New York ABC Apple Green New
  • MySQL Workbench 忽略外键

    在处理 MySQL Workbench 中的 SQL 编辑器时 我偶然发现了一些奇怪的事情 其中 执行似乎忽略了外键约束 这是一个例子 create database testdb use testdb create table t1 te
  • 存储过程总是返回0

    我试图从存储过程获取返回值 但它总是返回 0 c code cmd new SqlCommand cmd CommandType CommandType StoredProcedure cmd CommandText AbsentEntry
  • mysql LIKE 查询时间太长

    SQL SELECT COUNT usr id as total results FROM users as usr LEFT JOIN profile as prof ON prof uid usr uid WHERE usr usern
  • 如何使用 AJAX/jQuery 显示打印内容?

    所以我试图理解整个 AJAX jQuery 的事情 现在 当我单独运行这个 PHP 脚本时 我必须等待并观察轮子旋转 直到循环完成然后加载 while row mysql fetch array res postcode to storm
  • 如何修改 Amazon RDS 实例的 my.ini 参数

    在启动 MySQL 5 5 RDS 实例时 Amazon 使用默认参数组来配置 my ini 参数 但控制台不允许我修改它们 我怎样才能实现这个目标 例如默认将存储引擎设置为MyISAM或设置字符集 此处记录了这一点 http aws am
  • 如何在php中根据url从mysql获取数据?

    我在 mysql 数据库中有一个页表 其中包含 page name title content author 字段 我想用 php 来获取它http www domain com index php page page name http
  • 数据库级别的别名列名 [MySQL]

    别名 可能是错误的词 因为它是在将列 表名称作为查询中的其他名称引用的上下文中使用的 我感兴趣的是是否有一种方法可以在数据库中为列指定两个名称 如果我要打印这样的表格 它看起来会是这样的 mysql gt SELECT FROM User
  • Python 的 mysqldb 晦涩文档

    Python 模块 mysqldb 中有许多转义函数 我不理解它们的文档 而且我努力查找它们也没有发现任何结果 gt gt gt print mysql escape doc escape obj dict escape any speci
  • 使用数据库进行日志记录

    大多数日志似乎都是纯文本形式 而不是放入 MySQL 其他类型的数据库中 这是否有原因 在我看来 将它们放入数据库将使分析变得非常非常容易 但这会以牺牲速度还是其他什么为代价 我不太关心可移植性 显然你会有数据库连接的文本日志 我能想到两大
  • Postgres 中 -Infinity 和 Infinity 的适当值

    在一种情况下 我们必须在 Postgres DB 中存储 无穷大和 无穷大的值 应该考虑什么合适的值 如果没有 请建议最合适的替代方案 你实际上可以使用 infinity and infinity for FLOAT4 and FLOAT8
  • 如何使用sql脚本更改列的属性

    如何使用 sql 脚本更改列的属性 这是我尝试过但出现错误的方法 ALTER TABLE dbo tblBiometricPattern COLUMN BiometricPatternID TINYINT NOT NULL IDENTITY
  • MySQL 复制是双向的

    我们已经成功设置了 MySQL 文献中描述的主从复制 不过 我很好奇是否有人设置了双向复制 例如 如果安装了 Drupal 或 Wordpress 第一个 主 数据库服务器出现故障 第二个 从属 数据库服务器恢复正常 与此同时 用户不断进行
  • SQL Server 中的嵌套事务

    sql server 允许嵌套事务吗 如果是的话那么交易的优先级是什么 来自 SQL Server 上的 MSDN 文档 嵌套交易 http msdn microsoft com en us library ms189336 SQL 90

随机推荐

  • SourceTree系列5:贮藏和修复Bug

    1 贮藏 在切换分支时 要确保该分支已经提交 如果当前develop分支可以提交 无疑是最好的选择 但是 如果当前不能提交呢 此时我们可以使用贮藏功能 贮藏功能就是对现在的更改进行备份 注意仅仅是对更改进行备份 使用贮藏功能后 会让当前分支
  • SpringBoot 全局事务配置

    前言 传统springboot实现事务只需要在方法上添加 Transactional注解 但是需要在所有的service都加上事务 相对比较麻烦 随着项目的庞大 功能模块会随之增多 所以就需要采用AOP的方式实现全局事务处理 全局事务配置通
  • 常见的网络连接设备有哪些?

    大家好 我是你们的晴天学长 在计算级网络OSI体系结构和TCP IP模型中 网络连接设备是很重要的知识 在多个参考层中都有它的身影 请需要的小伙伴自取哦 网络互联设备 1 中继器 特点 转发所有接收到的信号 增加了网络的负担 网段上所有的节
  • .form文件_Feign完美解决服务之间传递文件、传递list,map、对象等情况

    先说下背景 前段时间有一个需求 需要将服务A生成的一个文件传递到服务B 交予服务B去做处理 最开始的时候使用的spring cloud starter openfeign 发现这一块是不支持的 然后引入了io github openfeig
  • 使用ftp服务修改删除重命名以及创建文件存取数据

    1删除 String ftpPath var ftp pub images 下载 String localPath home wang 下载 two15392444531 rar 上传 String localPath home wang
  • 【一个或多个筛选器或者Listeners启动失败 的问题探索以及解决方案】

    1 问题描述 使用IDEA作为开发工具 使用Maven作为项目管理工具 完成一个web项目后使用Tomcat作为服务器启动项目 报错一个或多个筛选器启动失败或者org apache catalina core StandardContext
  • 小程序点击右上角按钮退出,再进入时直接进入首页

    使用场景 小程序项目中 测试提了个bug 说进入某个页面之后 直接点右上角的退出 再进入小程序时 打开的是之前退出时的页面 有时左上角就没有后退按钮了 无法返回上一页 这里就涉及到页面栈的问题了 页面栈 首先先来了解一下微信小程序的运行环境
  • HTML详解连载(2)

    HTML详解连载 2 专栏链接 link http t csdn cn xF0H3 下面进行专栏介绍 开始喽 超链接 作用 代码示例 解释 经验分享 音频标签 代码示例 注意 强调 视频标签 代码示例 注意 强调 列表 作用 布局内容排列整
  • Unity Joint用法及案例

    本篇文章主要讲解如何在Unity中使用Joint组件完成一些刚体物理之间的连接效果 并且讲解一个简单案例 什么是Joint 官方文档介绍 Joint可以连接一个刚体与 另一个刚体 或世界空间某点 Joint可以通过施加力的方式来限制运动 j
  • 华硕服务器主板型号命名规则,华硕ROG系列主板命名规则详解_华硕 Maximus V Formula_主板评测-中关村在线...

    ROG玩家国度系列主板命名规则详解 玩家国度系列主板的命名方式虽然不是很常规 并且目前市售ROG系列主板仅有8款 但也遵循了一定的规则 ROG主板的命名公式为ABC AB共同代表了主板的芯片组名称 C代表主板所属系列 芯片组名称部分 Cro
  • stm32学习笔记----------从零开始

    引脚的初始化 1 GPIO InitTypeDef GPIO InitStructure 语句定义了一个GPIO InitTypeDef类型的变量 名为GPIO InitStructure 2 GPIO InitStructure GPIO
  • nginx请求超时设置

    默认60秒超时 http 配置在该区域会影响所有的server块 以下解决504问题 proxy connect timeout 300 单位秒 默认60 proxy send timeout 300 单位秒 默认60 proxy read
  • Mac/MacBookPro解决运行卡顿问题(非配置问题)

    Mac在升级后可能会出现莫名其妙的卡顿 运行缓慢等问题 如果遇到这种问题可以尝试以下几种方法恢复下 一 以安全模式启动 1 重新启动Mac 然后立即按住Shift键 显示屏上将出现Apple标志 2 看到登录窗口后松开Shift键 3 如果
  • 大厂Code Review 流程

    提交cr的流程 检查代码风格 可以安装googlestyle或者Alibaba的一些stylecheck工具 也许各开发团队会有自己的风格规范 从mainline中同步代码 注意使用 git pull rebase 而不是 git pull
  • 二叉树——初识

    链表 gt 二叉树 gt 二叉查找树 gt 平衡二叉树 二叉树时间复杂度 O logn 即2 x 树的深度 N 如 21亿点需要查找几次 2 32 21亿 查找32次 1 满二叉树 2 完全二叉树 设二叉树的深度为h 除第 h 层外 其它各
  • ⛳ Git安装与配置

    Git安装配置目录 Git安装与配置 一 git的安装 1 下载git 2 下载完成之后 双击安装即可 3 更改安装目录 没有中文且没有空格 4 所有设置选择默认设置即可 5 最后 点击Fanish 完成安装 二 检查Git版本 三 配置
  • Python 配置文件(.ini、 .conf、 .cfg)的读写

    python读取配置文件两个常用模块 ConfigParser和configobj模块 1 对比 ConfigParser的一些问题 不能区分大小写 重新写入的配置文件不能保留原有配置文件的注释 重新写入的配置文件不能保持原有的顺序 不支持
  • keil5中添加lpc213x系列芯片

    好久不见 keil5中添加lpc213x芯片 1 首先下载keil5 网上资料很多 这里就不再多述了 2 然后去这个网站 http www2 keil com mdk5 legacy 这里要注意 安装的位置要是你keil5文件的位置 3 重
  • F分布是由两个独立的卡方分布的比值所得到的分布

    import numpy as np from scipy stats import f F分布 分析两个正态分布方差比值的分布情况 F分布是由两个独立的卡方分布的比值所得到的分布 检验两个样本方差是否相等 常被用于统计分析 财务分析 市场
  • 如何实现两个数据库之间表的同步更新(增,删,改)

    这里如果知道触发器的使用方法的话 解决这个问题就很简单了 触发器 就是 种特殊的存储过程 触发器和存储过程 样是 个能够完成特定功能 存储在数据库服务器上的SQL 段 但是触发器 需调 当对数据表中的数据执 DML操作时 动触发这个SQL