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;
答案 0 :(得分:4)
根据https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html,RESTRICT
或ON UPDATE
条款中的ON DELETE
:
拒绝父表的删除或更新操作。
换句话说,当子表中的行引用此值时,尝试更改父表中的值将失败。
您不能在Oracle外键约束中指定ON UPDATE
子句,因为Oracle在外键约束中不支持ON UPDATE ...
选项。但是,这对您来说不是问题,因为Oracle使用UPDATE
语句和外键约束的行为与MySQL使用ON UPDATE RESTRICT
的行为相同。实际上,ON UPDATE RESTRICT
也是MySQL中的默认值,因此您可以在两个数据库中省略它。
因此,总而言之,是的,从约束中省略ON UPDATE RESTRICT
子句将解决您的问题。