日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MYSQL 触发器 实践案例

發布時間:2023/12/20 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MYSQL 触发器 实践案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

場景:

利用觸發器實現更新樓層表的樓層名稱時,自動更新與樓層相關的AP位置信息的樓層名稱;
刪除樓層時自動刪除與樓層相關的AP位置信息。

# 表1: CREATE TABLE `tb_ap_loc` (`id` int NOT NULL AUTO_INCREMENT,`floor` varchar(255) COLLATE utf8_bin DEFAULT NULL,`ap` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL,`left` int DEFAULT '0',`top` int DEFAULT '0',PRIMARY KEY (`id`),KEY `fk_floor` (`floor`),KEY `fk_ap` (`ap`),# 這里兩條外鍵約束可以不做,如果做了外鍵約束,其實也可以實現自動更新與刪除的功能CONSTRAINT `fk_ap` FOREIGN KEY (`ap`) REFERENCES `tb_ap` (`ap_name`) ON DELETE CASCADE ON UPDATE CASCADE,CONSTRAINT `fk_floor` FOREIGN KEY (`floor`) REFERENCES `tb_floor` (`floor`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=131 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;# 表2: CREATE TABLE `tb_floor` (`id` int NOT NULL AUTO_INCREMENT,`floor` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,`pid` int DEFAULT NULL,`map` varchar(255) COLLATE utf8_bin DEFAULT NULL,`ord` int DEFAULT NULL,PRIMARY KEY (`id`,`floor`) USING BTREE,KEY `floor` (`floor`) ) ENGINE=InnoDB AUTO_INCREMENT=58 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;# 表2觸發器:CREATE TRIGGER `tri_floor_delete` AFTER DELETE ON `tb_floor` FOR EACH ROW delete from tb_ap_loc where floor = OLD.floor;CREATE TRIGGER `tri_floor_update` AFTER UPDATE ON `tb_floor` FOR EACH ROW update tb_ap_loc set floor=NEW.floor where floor=OLD.floor;

效果:

當更新tb_floor里記錄的floor字段時,與之相關的tb_ap_loc的floor字段也會同步更新。

當刪除tb_floor里記錄時,與之相關的tb_ap_loc的floor也會自動刪除。

總結

以上是生活随笔為你收集整理的MYSQL 触发器 实践案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。