Mysql foreign key and trigger

2018-09-19  本文已影响0人  喵王不瞌睡

外键约束与触发器

建表

主表 users

CREATE TABLE `user` (
    `id`  int UNSIGNED NOT NULL AUTO_INCREMENT ,
    `name`  varchar(255) NOT NULL DEFAULT '' ,
    PRIMARY KEY (`id`)
)
ENGINE=InnoDB;

副表 user_info

CREATE TABLE `user_info` (
    `user_id`  int UNSIGNED NOT NULL DEFAULT 0 ,
    `address`  varchar(255) NOT NULL DEFAULT '' ,
    PRIMARY KEY (`user_id`)
)
ENGINE=InnoDB;

外键约束

副表 user_info 添加外键约束
当修改 user.id 时同时修改 user_info.user_id
当删除 user 时同时删除 user_info

ALTER TABLE `user_info` 
ADD CONSTRAINT `user` 
FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) 
ON DELETE CASCADE ON UPDATE CASCADE;

约束类别


触发器

主表 user 创建触发器

CREATE TRIGGER `create_info` AFTER INSERT ON `user` 
FOR EACH ROW INSERT INTO user_info (user_id) VALUES (NEW.id)
CREATE TRIGGER `delete_info` BEFORE DELETE ON `user` 
FOR EACH ROW DELETE FROM user_info where user_id = OLD.id

备注

MyISAM : 触发器
InnoDB : 外键约束 触发器

上一篇 下一篇

猜你喜欢

热点阅读