违反唯一约束

问题描述 投票:0回答:1
CREATE TABLE dept 
(
    dept_id NUMBER PRIMARY KEY, 
    dept_name VARCHAR2(50) 
);

CREATE TABLE emp 
(
    emp_id NUMBER PRIMARY KEY, 
    emp_name VARCHAR2(50), 
    dept_id NUMBER,
    CONSTRAINT emp_fk FOREIGN KEY (dept_id)
        REFERENCES dept (dept_id) 
);

CREATE SEQUENCE myseq1 NOCACHE;

现在检查这个陈述:

INSERT ALL INTO emp (emp_id, emp_name)
VALUES (myseq1.nextVal, 'name1') -- name1 insertion
INTO dept (dept_id, dept_name)
VALUES (10, 'dept1') -- dept1 insertion
INTO emp (emp_id, emp_name, dept_id)
VALUES (myseq1.nextVal, 'name2', 10) -- name2 insertion

SELECT * FROM dual;

问题:当我运行此 SQL 时,收到有关“违反唯一约束”的错误。有人可以解释一下唯一密钥在哪里以及如何被侵犯吗?

提前致谢!

我尝试阅读 Oracle 支持文档,尝试在 Oracle SQL Developer 中运行查询。现在我不明白该错误背后的原因。

sql oracle
1个回答
1
投票
INSERT ALL 中的

sequence.NEXTVAL 仅计算一次。 要么更改为多 INSERT,要么将sequence.NEXTVAL 包装在函数中。

© www.soinside.com 2019 - 2024. All rights reserved.