Я все еще новичок в SQL, и я немного застрял. Вот мой сценарий:Ограничение Oracle Employee
CREATE TABLE Employee
(SSN NUMBER NOT NULL,
FNAME VARCHAR(8) ,
MINIT VARCHAR(1) ,
LNAME VARCHAR(7) ,
BDATE DATE ,
SEX VARCHAR(1) ,
SALARY NUMBER(8,2) ,
SUPERSSN NUMBER ,
DNO NUMBER(2) ,
CONSTRAINT Employee_PK PRIMARY KEY (SSN),
CONSTRAINT Employee_FK1 FOREIGN KEY (SUPERSSN) REFERENCES Employee(SSN));
INSERT INTO Employee (SSN, FNAME, MINIT, LNAME, BDATE, SEX, SALARY, SUPERSSN, DNO)
VALUES (123456789, 'John', 'B', 'Smith', '09-JAN-55', 'M', '30000', '333445555', '5');
COMMIT;
DESC Employee
Как вы можете видеть, я пытаюсь создать ограничение для SUPERSSN> ССН, но она всегда дает мне целостности ограничение нарушено - родительский ключ не найден Когда я удалить CONSTRAINT Employee_FK1 FOREIGN KEY (SUPERSSN) ССЫЛКИ Сотрудник (SSN) работает отлично.
Но, если я сохраню его и удалю вставку в скрипт сотрудника, он также отлично работает. Поэтому я не уверен, что я делаю неправильно.
Я использую Oracle.
Вам нужно, чтобы _first_ вставить сотрудника с SSN, на который вы ссылаетесь. В этом весь смысл внешнего ключа: убедитесь, что вы ввели значение, которое уже существует –
. Итак, вы говорите, что мне нужно сначала вставить значение, а затем добавить ограничение после? –
Нет, вам нужно сначала вставить сотрудника с SSN = 333445555, прежде чем вы сможете вставить сотрудника, который использует это как SUPERSSN –