怎的在不用触发器的情况下,删除数据的时候,引用表的相应列设置为NULL
怎样在不用触发器的情况下,删除数据的时候,引用表的相应列设置为NULL?
StudentTable
ID, ClassID
1, 1
2, 1
3, 2
ClassTable
ID, Name
1, C1
2, C2
3, C3
StudentTable的ClassID引用ClassTable的ID; 怎样在不用触发器的情况下,在ClassTable删除数据的时候,StudentTable的ClassID 设置为NULL?
比如,如果删除掉 ClassTable.ID=1的列,那么StudentTable则为:
StudentTable
ID, ClassID
1, NULL
2, NULL
3, 2
------解决思路----------------------
------解决思路----------------------
这需要其他表的相关字段设置外键,外键的一个选项是删除是设NULL.
------解决思路----------------------
用事务先將字表对应的外键置空,然后再删除主表对应纪录应该可行。
StudentTable
ID, ClassID
1, 1
2, 1
3, 2
ClassTable
ID, Name
1, C1
2, C2
3, C3
StudentTable的ClassID引用ClassTable的ID; 怎样在不用触发器的情况下,在ClassTable删除数据的时候,StudentTable的ClassID 设置为NULL?
比如,如果删除掉 ClassTable.ID=1的列,那么StudentTable则为:
StudentTable
ID, ClassID
1, NULL
2, NULL
3, 2
------解决思路----------------------
ALTER TABLE XADD CONSTRAINT
FK_X FOREIGN KEY
(
ID
) REFERENCES Y
(
ID
) ON UPDATE NO ACTION
ON DELETE SET NULL -- 加这个选项,可以把子表的值置 NULL
------解决思路----------------------
这需要其他表的相关字段设置外键,外键的一个选项是删除是设NULL.
------解决思路----------------------
用事务先將字表对应的外键置空,然后再删除主表对应纪录应该可行。