关于自身表的外键触发器实现
2012-05-15 11:02
260 查看
目前遇到这样一个外键定义:
`t_girl`.`tb1`
CONSTRAINT `fk_1` FOREIGN KEY (`r_id`) REFERENCES `tb1` (`id`) ON DELETE CASCADE
目的是对于自己的另外一个字段进行约束, 其实这样看来, 后面的级联删除就没有必要了,因为针对的是同一张表的同一条记录。
/* Trigger structure for table `tb1` */
DELIMITER $$
/*!50003 DROP TRIGGER*//*!50032 IF EXISTS */ /*!50003 `tr_tb1_before_insert` */$$
/*!50003 CREATE */ /*!50017 DEFINER = 'root'@'localhost' */
/*!50003 TRIGGER `tr_tb1_before_insert`
BEFORE INSERT ON `tb1`
FOR EACH ROW
BEGIN
set new.r_id = new.id;
END
*/$$
DELIMITER ;
我们在除了INNODB之外的其他引擎可以直接用触发器来实现。
`t_girl`.`tb1`
CONSTRAINT `fk_1` FOREIGN KEY (`r_id`) REFERENCES `tb1` (`id`) ON DELETE CASCADE
目的是对于自己的另外一个字段进行约束, 其实这样看来, 后面的级联删除就没有必要了,因为针对的是同一张表的同一条记录。
/* Trigger structure for table `tb1` */
DELIMITER $$
/*!50003 DROP TRIGGER*//*!50032 IF EXISTS */ /*!50003 `tr_tb1_before_insert` */$$
/*!50003 CREATE */ /*!50017 DEFINER = 'root'@'localhost' */
/*!50003 TRIGGER `tr_tb1_before_insert`
BEFORE INSERT ON `tb1`
FOR EACH ROW
BEGIN
set new.r_id = new.id;
END
*/$$
DELIMITER ;
我们在除了INNODB之外的其他引擎可以直接用触发器来实现。
相关文章推荐
- 【原创】关于自身表的外键触发器实现
- 关于自身表的外键触发器实现
- 通过触发器实现两张有主外键关系的表的数据插入问题
- 关于触发器实现跨数据库的操作问题
- 关于外键索引触发器名称重复
- 关于错误:"ORA-04091: table is mutating, trigger/function may not see it"的分析(触发器操作自身表)
- 关于错误:"ORA-04091: table is mutating, trigger/function may not see it"的分析(触发器操作自身表)
- SqlServer级联删除两种实现方法:触发器,外键
- Oracle关于表主键自增触发器的实现
- 关于触发器修改自身数据表实例
- Oracle外键级联更新——延迟约束和触发器实现
- 数字集成电路设计-10-关于采用两级触发器实现双时钟域信号同步方法的分析与验证
- 通过触发器实现两张有主外键关系的表的数据插入问题
- 用触发器实现SQLite的外键约束
- 用触发器实现SQLite的外键约束
- 关于触发器修改自身数据表实例
- 关于单例模式和多线程之间无法实现的问题
- 【实战】烂泥:关于科迈公司RAS远程接入方案的实现原理
- Razor与SPA,关于MVC-View实现的思考
- 关于C++的头文件.h和.cpp(实现类)文件