Oracle Database Project для Visual Studio 2017 - неправильный порядок создания таблицы при наличии внешних ключей - PullRequest
0 голосов
/ 23 октября 2018

В Visual Studio 2017, с нуля запустил проект базы данных Oracle (версия 2) и добавил две новые таблицы «Родитель» и «Дочерний»:

Проект базы данных

Parent.sql содержит:

CREATE TABLE BDT.Parent 
(
    ID INT NOT NULL,
    Description VARCHAR2(255) NOT NULL
);

Child.sql содержит:

CREATE TABLE BDT.Child 
(
    ID INT NOT NULL,
    ParentID INT NOT NULL,
    Description VARCHAR2(255) NOT NULL,
    CONSTRAINT "FK_CHILD_PARENT" FOREIGN KEY (ParentID)
    REFERENCES "BDT".Parent ("ID")
);

"BDT.Child" имеет ссылку на внешний ключ на "BDT.Parent", поэтому "BDT.Parent "должен быть создан первым. Но когда я собираю проект (щелкнув правой кнопкой мыши по узлу проекта и выбрав" build "), сценарий, сгенерированный в папке bin, выглядит следующим образом:

--
-- CHILD
--
CREATE TABLE BDT.Child 
(
  ID INT NOT NULL,
  ParentID INT NOT NULL,
  Description VARCHAR2(255) NOT NULL,
  CONSTRAINT "FK_CHILD_PARENT" FOREIGN KEY (ParentID)
  REFERENCES "BDT".Parent ("ID")
);
--
-- PARENT
--
CREATE TABLE BDT.Parent 
(
  ID INT NOT NULL,
  Description VARCHAR2(255) NOT NULL
);
--
-- FK_CHILD_PARENT
--
ALTER TABLE "BDT"."CHILD" ADD CONSTRAINT "FK_CHILD_PARENT" FOREIGN KEY ("PARENTID") REFERENCES "BDT"."PARENT"("ID") ENABLE;

Здесь я вижу две основные проблемы:

  • Упорядочение операторов "CREATE TABLE", похоже, основано на алфавите. Если я изменю имя дочерней таблицы на "ZChild", то оно будет помещено в конецскрипта.
  • Кажется, что дублирование ограничения внешнего ключа включено в оператор CREATE, а в конце скрипта - в оператор ALTER.

Я могу 'не может найти ни ссылки на эту конкретную проблему, ни каких-либо жалоб.что-то не так с этой настройкой?

Я использую:

  • Visual Studio 2017 (15.8.7)
  • Инструменты разработчика Oracle для Visual Studio, поставляемые с ODAC для Visual Studio 2017 (12.2.0.1.1)

Заранее спасибо.

...