小编典典

关于删除级联的更新限制

sql

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;

我想将此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;

阅读 249

收藏
2021-05-30

共1个答案

小编典典

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

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

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

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

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

2021-05-30