Я использую SQL Developer (с Oracle XE), чтобы установить 3 таблицы и добавить PK, FK .. Теперь я хочу добавить несколько строк ...Как установить FK во время вставки строки в SQL разработчика
INSERT INTO "ADMIN"."POST" (NAME_POST) VALUES ('asd')
ORA-02291: integrity constraint (ADMIN.POST_DEPARTMENT_FK1) violated - parent key not found
ORA-06512: at line 1
Я не знаю, где я могу найти это FK
, чтобы выбрать один! С SQL Developer я заполняю столбцы без FK, поэтому мне нужна помощь, чтобы найти, как это сделать правильно, используя SQLDeveloper
.
Новая информация:
Я не знаю, почему, но у меня есть отношение один-к-одному между ДЕПАРТАМЕНТА и POST.
CREATE TABLE "ADMIN"."POST"
( "ID_POST" NUMBER(*,0) NOT NULL ENABLE,
"NAME_POST" VARCHAR2(40 BYTE) NOT NULL ENABLE,
CONSTRAINT "POST_PK" PRIMARY KEY ("ID_POST")
USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "SYSTEM" ENABLE,
CONSTRAINT "POST_DEPARTMENT_FK1" FOREIGN KEY ("ID_POST")
REFERENCES "ADMIN"."DEPARTMENT" ("ID_DEPARTMENT") ON DELETE CASCADE ENABLE
) SEGMENT CREATION IMMEDIATE
PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "SYSTEM" ;
CREATE OR REPLACE TRIGGER "ADMIN"."POST_ID"
BEFORE INSERT ON POST
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
if(:new.ID_POST is null) then
SELECT S_POST.nextval
INTO :new.ID_POST
FROM dual;
end if;
END;
/
ALTER TRIGGER "ADMIN"."POST_ID" ENABLE;
Сначала необходимо вставить запись с родительским ключом. Вот как работают внешние ключи: запись не может быть вставлена в таблицу, когда значение внешнего ключа не существует в ссылочной таблице. – krokodilko
Извините, но это не главное. У меня есть несколько строк с Departments, поэтому у меня есть ключи. Но где я могу найти его при вставке? Если я вставляю новые данные в таблицу Post, я ничего не вижу о fk .. о том, как «получить столбец fk при вставке данных в SQL Developer», а не о том, «что означает эта ошибка?» Спасибо. – Khronos
Взгляните на примеры здесь с предложением «возврат»: http://psoug.org/reference/insert.html Вставьте в основную таблицу, возвращая pk в переменную. Затем используйте эту переменную как часть вставки в дочернюю таблицу. Или, если запись уже существует в главной таблице, сначала выполните поиск. – Glenn