当前位置:网站首页>【SQL】触发器同步表数据
【SQL】触发器同步表数据
2022-08-04 19:43:00 【梦想blog】
需求:国家表新增-更新-删除,省份表同步更新。
写代码的话也可以做,但是某些情况直接操作数据库,就会导致数据不一致。
注意:只能单项同步,不能双向同步,否则可能导致死循环。
国家表
CREATE TABLE `addrcountry` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fk_addrcontinents` int(11) DEFAULT NULL,
`code` varchar(1000) DEFAULT NULL,
`createtime` datetime DEFAULT NULL,
`modifytime` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`fk_user_create` int(11) DEFAULT NULL,
`fk_user_modify` int(11) DEFAULT NULL,
`isvalid` int(11) DEFAULT NULL
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB COMMENT='国家表';
省份表
CREATE TABLE `addrprovince` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fk_addrcountry` int(11) DEFAULT NULL,
`code` varchar(50) DEFAULT NULL,
`createtime` datetime DEFAULT NULL,
`modifytime` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`fk_user_create` int(11) DEFAULT NULL,
`fk_user_modify` int(11) DEFAULT NULL,
`isvalid` int(11) DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB COMMENT='省份表';
触发器
在触发器里面有两个关键字 old 和 new,new 表示新数据,old 表示老数据。
新增 + 更新 + 删除。
DROP TRIGGER IF EXISTS `sync-addrprovince-insert`;
DROP TRIGGER IF EXISTS `sync-addrprovince-update`;
DROP TRIGGER IF EXISTS `sync-addrprovince-delete`;
CREATE TRIGGER `sync-addrprovince-insert` AFTER INSERT ON `addrcountry` FOR EACH ROW
BEGIN
INSERT INTO `addrprovince`
(
`id`,
`fk_addrcountry`,
`code`,
`createtime`,
`modifytime`,
`fk_user_create`,
`fk_user_modify`,
`isvalid`
)
SELECT
`id`,
`id` AS `fk_addrcountry`,
`code`,
`createtime`,
`modifytime`,
`fk_user_create`,
`fk_user_modify`,
`isvalid`
FROM `addrcountry`
WHERE `id` = new.`id`;
END;
CREATE TRIGGER `sync-addrprovince-update` AFTER UPDATE ON `addrcountry` FOR EACH ROW
BEGIN
UPDATE `addrprovince` t1 SET
t1.`id` = new.`id`,
t1.`fk_addrcountry` = new.`id`,
t1.`code` = new.`code`,
t1.`createtime` = new.`createtime`,
t1.`modifytime` = new.`modifytime`,
t1.`fk_user_create` = new.`fk_user_create`,
t1.`fk_user_modify` = new.`fk_user_modify`,
t1.`isvalid` = new.`isvalid`
WHERE t1.`id` = old.`id`;
END;
CREATE TRIGGER `sync-addrprovince-delete` AFTER DELETE ON `addrcountry` FOR EACH ROW
BEGIN
DELETE FROM addrprovince WHERE id = old.id;
END;
边栏推荐
- 二叉树是否对称
- 小软件大作用 | 如何省时省力进行Gerber图层快速对比?
- 奥拉时钟芯片生成配置文件脚本
- Finished product upgrade program
- SAP UI5 的初始化过程
- T+Cloud:构建新型生意社交网络和营销关系的“智公司”
- 华为WLAN技术:AP上线及相关模板的配置实验
- NLP技术为何在工业界这么卷?前沿案例解析来了
- Aura clock chip generation configuration file script
- Use "green computing" technology to promote sustainable development of computing power
猜你喜欢
力扣题(5)—— 最长回文子串
Video Object Detection
【ASP.NET Core】 中间件
华为WLAN技术:AP上线及相关模板的配置实验
七夕福利!中奖名单:书籍免费送!
Quantitative trading robot system development
Query the published version records of the APP Store
ELECTRA:Pre-training Text Encoders as Discriminators Rather Than Generators
【Attention演变史】翻译模型seq2seq (第二弹)
Ant Group's time series database CeresDB is officially open source
随机推荐
visual studio 与 visual studio code
宏定义小方法
《学会写作》粥佐罗著
从卖产品到卖“链路”:20条策略 解读直播带货迭代玩法
二叉树是否对称
c sqlite ... ...
Order of lds links
awk 统计差值记录
Storage resource activation system to help new infrastructure
视频目标检测
Polygon zkEVM 基本概念
seata源码解析:seata server各种消息处理流程
JSD-2204-酷莎商城(管理员模块)-密码加密-Day10
hash和history路由的区别
How to monitor code cyclomatic complexity by refactoring indicators
[Awards for Essays] Autumn recruitment special training to create your exclusive product experience
运维就业现状怎么样?技能要求高吗?
JS手写JSON.stringify() (面试)
华为交换机:STP测试实验
用“绿色计算“技术推动算力可持续发展