【发布时间】:2016-10-20 20:18:18
【问题描述】:
我正在尝试创建这个活动表:
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
)
但我收到此错误:
消息 1785,第 16 级,状态 0,第 114 行
在表 'activity' 上引入 FOREIGN KEY 约束 'fk_act_ser_id' 可能会导致循环或多个级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。消息 1750,第 16 级,状态 0,第 114 行
无法创建约束或索引。查看以前的错误。
如果我设置fk_act_ser_id 约束UPDATE NO ACTION,那么代码将毫无错误地运行。但我想设置它是UPDATE CASCADE。
有谁知道如何解决这个问题?
【问题讨论】:
-
我们还要查看
service表的 DDL。 -
旁注:请不使用
float(或real或double)获取价格或费率信息 - 这些类型臭名昭著不准确,并容易成为舍入错误的牺牲品。将decimal(p,s)用于所有与金钱相关的值! -
哦好的..谢谢你:)
标签: sql sql-server sql-server-2008