每当我尝试删除表或创建表时,它都会显示以下错误:
DROP TABLE SUBURB;
DROP TABLE STOCKITEM;
DROP TABLE MANUFACTURER;
DROP TABLE WAREHOUSE;
DROP TABLE CITY;
DROP TABLE STATE;
Error at line 1: ORA-02449: unique/primary keys in table referenced by foreign keys
CREATE TABLE STATE (
statecode varchar(3)
,statename varchar(30)
,population number(8)
,primary key(statecode)
);
Error at line 1: ORA-00955: name is already used by an existing object
任何人都可以解释为什么会发生这种情况?
最佳答案
如果您真的确定要删除表,即使它在外键中被引用,您可以像这样强制它:
drop table state cascade constraints;
此语法在 the Oracle SQL Reference 中定义.
请注意,这会删除任何外键关系。因此,您需要在重建表(及其主键)后重新创建它们。通常这是可以的,因为最常见的用例是在开发或 CI 环境中删除和重新创建模式。
我们可以使用
cascade constraints
使我们的构建脚本更易于维护。有两种选择:表,使用脚本或动态 SQL。
TABLE 语句,以便首先删除从属表,然后
用他们讨厌的外键。足够简单的几张 table ,
大架构更痛苦。
关于sql - 在 Oracle SQL 中删除表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32292561/