当删除同一表中的另一行时,将行内的部分/全部值更新为null

时间:2018-08-06 00:53:15

标签: mysql sql

我有一个如下的mysql表

id  tetangga1 tetangga2
1   null     null                       
2   1        3              
3   1        4           
4   4        5         
5   4        6         
6   6        null      

当删除同一张表中的某一行时,我需要将tetangga行的值更新为NULL,例如,如果我删除第1行,则该表将如下所示

id  tetangga1 tetangga2                       
2   NULL        3              
3   NULL        4           
4   4           5         
5   4           6         
6   6           NULL  

说明:第1行将被删除,第2行和第3行tetangga1的值将更新为空

我该如何实现?

1 个答案:

答案 0 :(得分:1)

您可以使用适当定义的外键关系来做到这一点:

alter table t
    add constraint fk_t_tetangga1
        foreign key (tetangga1) references t(id)
        on delete set NULL;

这实际上比触发器要好。数据库将保持关系的完整性。