table1和table2是多对1的关系。
我想用table1的删除触发器删除table2中的数据,
如果当前没有table1中的数据对应table2就把table2中的数据删除,如果有table2就不需要删除操作:比如
table1中
Id relation_to_table2_id
1 2
2 2
3 3
table2中
t2id
2
3
如果我删除了table1中的纪录id = 3 就将t2id中的纪录3也删除
如果我删除table1中的纪录id=2就不能将t2id中的任何纪录删除。
因为删除table2的操作是在table1行级删除触发器中触发的,不可以select自身的。我不知道怎样判断阿。请大侠门帮忙阿。
---------------------------------------------------------------
很多种方案可以实现:
1、建立一个package,定义一个变量用来存放删除纪录的ID;在表1上建立一个行级触发器,每行删除的时候把ID放入包中的变量;在表1上再建立一个非行级的触发器,在这种触发器中就能对本表操作,可以利用刚才建立的变量中的值来判断表1中是否还有纪录并删除表2中的纪录。
2、如果两个表之间有外键关系就比较容易,直接用行级触发器加上EXCEPTION处理就可以。
3、用过程来处理。我倾向于这种方式。
---------------------------------------------------------------
外键可以一支持级联删除