使用 MySQL 触发器同时向两个表中插入数据信息
使用场景:现有这样的关系:
例如将用户登录注册,详细信息分别放在了两张表中,我们注册一个用户及插入用户登录/注册表的信息,但是详细信息表是没有记录的,如果还想用注册/登录表的自动生成的主键作为外键,被详细信息表依赖,所以,详细信息表在注册时最少也要生成主键
此时,就遇到了需要同时向两张表中插入数据的操作,并且是有外键关系的,此时考虑几个问题:
(1)登录表注册之后才会有主键 user_id
(2)详细信息表还需要用那个 user_id
(3)如果想在登录表插入后再去查询出那个 user_id 就会有问题,还必须有其他唯一键吧
解决方法:使用 MySQL 触发器
(1)创建触发器:
使用 Navicat:
使用SQL:
CREATE TRIGGER `ins_trigger` AFTER INSERT ON `user_info` FOR EACH ROW INSERT INTO user_detail_info(user_id) VALUES(new.user_id);;
(2)查询所有触发器:
使用 SQL:
show TRIGGERS from 数据库名;
(3)不需要时删除:
drop trigger 触发器名称;
(4)测试: