我有有一個主鍵t1id.I具有帶有列t1id另一個表T2是一個forign關鍵T1的t1id table.Please看到查詢表T1級聯約束如何添加對現有列
create table T1
(
t1idint primary key IDENTITY(1,1),
Name varchar(200) not null
);
create table T2
(
t2idint primary key IDENTITY(1,1),
t1id int,
nod bigint,
foreign key (t1id) references T1(t1id)
);
以及更多與T2表格鏈接的表格,我沒有在這裏展示。
我已經在表T1和T2中插入了一些值。
現在要從T1中刪除一行,我必須先從T2中刪除一行,然後只能由於foriegn密鑰關係從T1中刪除一行。
所以我想加入級聯約束是好主意
我試着像下面
ALTER TABLE T2
ADD CONSTRAINT fk_T2id
FOREIGN KEY (t1id)
REFERENCES T1(t1id)
ON DELETE CASCADE;
,但我得到了下面的錯誤
消息1785,級別16,狀態0,第1行 在表'T2'中引入FOREIGN KEY約束'fk_t1id'可能會導致循環或多個級聯路徑。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY約束。 消息1750,級別16,狀態0,行1 無法創建約束。查看以前的錯誤。
您的示例代碼不夠好,無法顯示您觀察到的行爲(在我將其修復爲實際工作後)。編輯它以確保錯誤實際顯示:)此外,通常您只需將'on delete cascade'添加到現有約束,而不是創建一個新的約束。 – Luaan 2015-02-10 09:06:58