首次使用SQL Live建表遇ORA-00942错误求助
问题原因与解决方法
错误原因
你碰到的ORA-00942: table or view does not exist错误,核心原因是创建Emp表时,定义的外键fk_Dept_Emp需要引用Dept表,但此时Dept表还没创建,数据库找不到对应表。另外Emp和Dept存在循环外键依赖(Emp引用Dept,Dept又引用Emp),直接同时创建两张表会触发依赖冲突。
修正方案
分三步操作,避开循环依赖问题,同时满足所有约束要求:
- 先创建Dept表,暂不添加Mgr的外键约束
CREATE TABLE Dept ( Deptno INT PRIMARY KEY, Dname VARCHAR(50) UNIQUE NOT NULL, Mgr INT );
- 创建Emp表,此时Dept已存在,外键可正常引用
CREATE TABLE Emp ( Empno INT PRIMARY KEY, Ename VARCHAR(50) NOT NULL, DNO INT, BirthDate DATE, Sal DECIMAL(10,2) CHECK (Sal BETWEEN 1000 AND 10000), CONSTRAINT fk_Dept_Emp FOREIGN KEY (DNO) REFERENCES Dept(Deptno) );
- 给Dept表补加Mgr的外键约束
ALTER TABLE Dept ADD CONSTRAINT fk_Emp_Dept FOREIGN KEY (Mgr) REFERENCES Emp(Empno);
内容的提问来源于stack exchange,提问作者zgstudent
相关产品推荐
相关产品推荐

