更新限制删除级联

Pra*_*sad 4 sql oracle

ALTER TABLE IDN_APPMGT_CLAIM_MAPPING 
ADD CONSTRAINT CLAIMID_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES IDN_APPMGT_APP (ID) 
ON UPDATE RESTRICT
ON DELETE CASCADE;
Run Code Online (Sandbox Code Playgroud)

我想将此 SQL 转换为 Oracle。由于 Oracle 没有 ON UPDATE RESTRICT,我无法想象这应该如何完成。省略 ON UPDATE 子句会解决问题吗?

ALTER TABLE IDN_APPMGT_CLAIM_MAPPING 
ADD CONSTRAINT CLAIMID_APPID_CONSTRAINT FOREIGN KEY (APP_ID) REFERENCES IDN_APPMGT_APP (ID) 
ON DELETE CASCADE;
Run Code Online (Sandbox Code Playgroud)

Luk*_*ard 5

根据https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.htmlRESTRICTON UPDATEorON DELETE子句中:

拒绝父表的删除或更新操作。

换句话说,当子表中的行引用此值时,尝试更改父表中的值将失败。

您不能ON UPDATE在 Oracle 外键约束中指定子句,因为 Oracle 不支持ON UPDATE ...外键约束中的选项。但是,这对您来说不是问题,因为 Oracle 在UPDATE语句和外键约束方面的行为与 MySQL 在ON UPDATE RESTRICT. 实际上,ON UPDATE RESTRICT它也是 MySQL 中的默认值,因此您可以在两个数据库中都省略它。

因此,总而言之,是的,ON UPDATE RESTRICT从约束中省略子句将解决您的问题。