SQL Server创建表错误 - 可能导致循环或多个级联路径

时间:2016-06-19 13:46:49

标签: sql sql-server sql-server-2008

我正在尝试创建此活动表:

CREATE TABLE activity 
(
    activity_id int,
    description varchar(300),
    start_date date,
    due_date date,
    plannes_price float,
    hours_worked int,
    billing_rate float,
    actual_price float,
    status varchar(50),
    employee_id int,
    date_completed date,
    service_id int,

    CONSTRAINT pk_activityId PRIMARY KEY (activity_id),
    CONSTRAINT fk_act_emp_id FOREIGN KEY (employee_id) 
         REFERENCES employee(employee_id) 
         ON UPDATE CASCADE ON DELETE SET NULL,
    CONSTRAINT fk_act_ser_id FOREIGN KEY (service_id) 
         REFERENCES service(service_id) 
         ON UPDATE CASCADE ON DELETE NO ACTION
)

但是我收到了这个错误:

  

Msg 1785,Level 16,State 0,Line 114
  在表'activity'上引入FOREIGN KEY约束'fk_act_ser_id'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。

     

Msg 1750,Level 16,State 0,Line 114
  无法创建约束或索引。查看以前的错误。

如果我设置fk_act_ser_id约束UPDATE NO ACTION,则代码将运行且没有错误。但我想设置它是UPDATE CASCADE。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

关于这里没有显示的表格的全部内容。有多种方法可以删除activity - 其中一种方法有两条activity路径。例如,如果service可以导致删除employee(或employee删除,则可以删除service)...或其他一些删除路径。对于给定起始表中的任何表,您只能有一个删除/更新路径。