Определение внешнего ключа для составного первичного ключа в SQL Server - PullRequest
0 голосов
/ 07 октября 2019

У меня есть две таблицы: Ticket и TicketRelation. Я пытаюсь связать 2 Tickets, используя таблицу TicketRelation.

Я хочу добавить каскадное ограничение к обоим внешним ключам.

classes

IЯ использую SQL Server Management Studio для добавления ограничений, но я получаю эту ошибку:

Введение ограничения FOREIGN KEY 'FK_destiny_ticket' в таблицу 'ticketRelation' может привести к циклам или нескольким каскадным путям. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY.

Я также пытался сделать это с помощью триггера, но я не уверен, как его определить.

Здесь я приведу определения таблиц:

Это базовая сущность TICKET

CREATE TABLE ticket 
(
    ticket_id BIGINT,
    some_data VARCHAR (50),

    CONSTRAINT PK_ticket PRIMARY KEY (ticket_id)
);

и реляционная таблица TICKETRELATION

CREATE TABLE ticketRelation 
(
    origin_ticket BIGINT,
    destiny_ticket BIGINT,
    relation_data VARCHAR (50),

    CONSTRAINT PK_ticket_relation PRIMARY KEY (origin_ticket, destiny_ticket),

    CONSTRAINT FK_origin_ticket FOREIGN KEY (origin_ticket)
        REFERENCES ticket(ticket_id),

    CONSTRAINT FK_destiny_ticket FOREIGN KEY (destiny_ticket)
        REFERENCES ticket(ticket_id),
)

Я хочу добавитьON DELETE CASCADE ограничение для обоих внешних ключей:

    CONSTRAINT FK_origin_ticket FOREIGN KEY (origin_ticket)
         REFERENCES ticket(ticket_id)
              ON DELETE CASCADE, -- I want to add this --

    CONSTRAINT FK_destiny_ticket FOREIGN KEY (origin_ticket)
        REFERENCES ticket(ticket_id)
             ON DELETE CASCADE, -- and this --
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...