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 中运行查询。现在我不明白该错误背后的原因。
sequence.NEXTVAL 仅计算一次。 要么更改为多 INSERT,要么将sequence.NEXTVAL 包装在函数中。