有人能解释一下这个Oracle SQL命令吗?

时间:2010-11-08 13:47:17

标签: sql oracle

ALTER TABLE "APPLICATIONS_SRV_STORAGE"
    ADD CONSTRAINT "APPL_SRV_STORAGE_APPLICAT_FK1"
    FOREIGN KEY ("APP_ID")
    REFERENCES "APPLICATIONS" ("APP_ID")
    ON DELETE CASCADE
    ENABLE;

是否意味着:当删除表APPLICATIONS上的内容时,删除虽然APPLICATION_SRV_STORAGE中的条目?

3 个答案:

答案 0 :(得分:8)

添加DELETE CASCADE意味着当删除APPLICATIONS中的一行时,APPLICATIONS_SRV_STORAGE中引用其APP_ID的任何行也将被删除。

答案 1 :(得分:3)

是。 APPLICATIONS将被视为父级,APPLICATIONS_SRV_STORAGE将成为子级,通过APP_ID建立连接。删除父项后,也将删除所有子项(级联)。

参考:http://www.techonthenet.com/oracle/foreign_keys/foreign_delete.php(找不到官方的。)

答案 2 :(得分:3)

这会向表APPL_SRV_STORAGE_APPLICAT_FK1添加名称为APPLICATIONS_SRV_STORAGE的新约束。

约束本身就是对于APPLICATIONS_SRV_STORAGE.APP_ID列中的每个值,APPLICATIONS.APP_ID中必须存在匹配值。 APPLICATIONS.APP_ID可以包含APPLICATIONS_SRV_STORAGE.APP_ID中未包含的值。

除此之外,如果从表APP_ID中删除APPLICATIONS,则同时删除APPLICATIONS_SRV_STORAGE中具有相同ID的所有行。

在创建时,约束已启用(Oracle允许您临时禁用约束)。