У меня есть две таблицы: Ticket
и TicketRelation
. Я пытаюсь связать 2 Tickets
, используя таблицу TicketRelation
.
Я хочу добавить каскадное ограничение к обоим внешним ключам.
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 --