MAKAPOH
@MAKAPOH
многостаночник

Как правильно задать несколько внешних ключей на одну таблицу?

Добрый день.
Впервые столкнулся с MSSQL сервером баз данных.
С помощью двух последоательных запросов пытаюсь создать в нём две таблицы, первая:
CREATE TABLE "item" (
    "id" BIGINT IDENTITY(1,1) NOT NULL,
    "name" NVARCHAR(255) NOT NULL,
    CONSTRAINT "item_pk" PRIMARY KEY ("id"),
    CONSTRAINT "unique_item_name" UNIQUE ("name")
)

вторая:
CREATE TABLE "item_parent_child" (
    "id" BIGINT IDENTITY(1,1) NOT NULL,
    "parent_id" BIGINT NOT NULL,
    "child_id" BIGINT NOT NULL,
    
    CONSTRAINT "item_parent_child_pk" PRIMARY KEY ("id"),
    CONSTRAINT "fk_item" FOREIGN KEY ("parent_id") REFERENCES "item" ("id") ON DELETE CASCADE,
    CONSTRAINT "fk_child" FOREIGN KEY ("child_id") REFERENCES "item" ("id") ON DELETE CASCADE,
)

Вторая таблица не создаётся с такой ошибкой:
Introducing FOREIGN KEY constraint 'fk_child' on table 'item_parent_child' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.

Может кто то объяснить, что это за циклы которые он видит, почему в MSSQL так делать нельзя, и как быть если нужно именно каскадное удаление?
Спасибо.
  • Вопрос задан
  • 2372 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы