在SQL Server中定义复合主键的外键

时间:2019-10-07 17:41:18

标签: sql sql-server triggers foreign-keys composite-primary-key

我有两个表:TicketTicketRelation。我正在尝试使用Tickets表来关联2 TicketRelation

我想为两个外键添加一个级联约束。

classes

我正在使用SQL Server Management Studio添加约束,但是出现此错误:

  

在表“ ticketRelation”上引入FOREIGN KEY约束“ FK_destiny_ticket”可能会导致循环或多个级联路径。指定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 --

0 个答案:

没有答案