DB2 的Foreign Key在DELETE上有四种设置:
No Action : 不要被字面意思所影响,它的意思其实和Restrict delete一样。
Restrict delete: 表示删除父表记录时如果存在子表的关联记录,将被回滚,并且报错;
Cascade : 表示在删除父表的同时删除子表的记录(级联删除.);
Set Null : 表示在删除父表的同时,子表外键列被设置为 null;
No Action和Restrict delete的区别只是在于一点:
Note: No Action is the default situation for DB2 UDB on Unix or Windows. Restrict delete is the default situation for DB2 UDB on z/OS.
No Action 的意思为 ‘不做任何操作’。被有些人理解错误时因为他们没有想到外键的一个关键作用:防止数据孤岛的错在。
所以No Action 的真正含义为 ‘不做任何操作,DB按照原有的逻辑去处理’。而DB原有的逻辑就是Restrict delete的逻辑。
---自己的理解,出错请指正。