Проблема с оператором SQL
У меня проблема с оператором SQL. Я хочу активировать поведение "ON UPDATE CASCADE" для внешнего ключа в таблице с помощью этого оператора:
ALTER TABLE "DB"."RECORD" ADD CONSTRAINT "RECORD_PT_OUTIL_FK1" FOREIGN KEY ("CDE_PO")
REFERENCES "DB"."PT_OUTIL" ("CDE_PO") ON UPDATE CASCADE ENABLE;
Но когда я запускаю оператор в Oracle Developer, я просто получаю сообщение об ошибке: "ORA-00905: отсутствует ключевое слово". Я не могу найти то, что может быть этим пропущенным ключевым словом, я пробовал несколько изменений, но всегда возникает одна и та же ошибка. Я сам использую код, сгенерированный Oracle Developer, и просто изменяю его так, как я хочу. Это сгенерированный код:
ALTER TABLE "DB"."RECORD" ADD CONSTRAINT "RECORD_PT_OUTIL_FK1" FOREIGN KEY ("CDE_PO")
REFERENCES "DB"."PT_OUTIL" ("CDE_PO") ON DELETE CASCADE DISABLE;
Видишь, я просто изменил конец. Так в чем тут дело? Я что-то пропустил? (пожалуйста, не ругайтесь, если это что-то очевидно:)) Спасибо!
2 ответа
Oracle не поддерживает ON UPDATE
пункт для внешних ключей.
Смотрите описание REFERENCES
пункт в руководстве:
http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/clauses002.htm
Попробуйте, удалив DISABLE
/ ENABLE
в конце вашей команды
Что касается ссылки ADD CONSTRAINT, кажется, что в составе команды нет никаких "Включить / Отключить".
Я думаю, что это то, что ваш разработчик Oracle добавляет в конце ( это является частью синтаксиса Oracle), и это может быть причиной проблемы!!