如何在插入后检查另一个表中的插入

时间:2013-12-12 07:36:41

标签: mysql database triggers

我有两个实体propositiondepartment。一个命题必须至少针对一个部门(1-N),一个部门可以成为0-N命题的目标。

所以在我的数据库中,我有3个表:PROPOSITIONTARGETDEPARTEMENT

我试图找到一种方法来确保在PROPOSITION中插入命题后,在TARGET中插入一个条目。换句话说,我想确保(1-N)关系不会成为(0-N)关系。

有没有办法用触发器做到这一点?或者我应该更改数据库的结构吗?

提前致谢

[编辑] 解决方案:

触发器无法完成工作,因为TARGET中的插入取决于用户异步输入的值。例如,如果命题1指向部门2和3,则在我的表中数据为:

PROPOSITION
1

TARGET
1 2
1 3

DEPARTMENT 
1  
2 
3

触发点:在插入某些内容后,在PROPOSITION上设置触发器....我们做什么 ?等待TARGET中的插入?在部门的TARGET中插入默认值? 因此,PROPOSITION上的触发器无效。

我找到的唯一解决方案是重构我的数据库:

  • 我在命题中添加了一个不能为NULL的字段DEPARTMENT_NUMBER
  • 我在TARGET表格上设置了一个触发器,以便在插入之前检查该命题尚未针对其属性中的部门。

该方法减慢了数据库的速度,但确保了(1-N)关系得到尊重

1 个答案:

答案 0 :(得分:0)

在我看来,这样做的最好方法是在Proposition上创建一个插入Target的触发器。

检查此链接,它应该让您入门。 http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html