美文网首页
Mysql foreign key and trigger

Mysql foreign key and trigger

作者: 喵王不瞌睡 | 来源:发表于2018-09-19 14:08 被阅读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;
    

    约束类别

    • CASCADE :从父表删除或更新且自动删除或更新字表中的匹配的内容;
    • SET NULL :从父表删除或更新且子表中相匹配的内容设置为NULL,使用此功能必须保证字表列没有指定为NOT NULL;
    • RESTRICT :拒绝对父表的删除或更新操作;
    • NO ACTION:标准SQL关键字,在mysql中与restrict相同;

    触发器

    主表 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 : 外键约束 触发器

    相关文章

      网友评论

          本文标题:Mysql foreign key and trigger

          本文链接:https://www.haomeiwen.com/subject/edlinftx.html