SQL Server2000級聯(lián)刪除的問題列舉
此文章主要向大家探討的是SQL Server2000級聯(lián)刪除的某些問題,如果你對這SQL Server2000級聯(lián)刪除技術(shù),心存好奇的話,以下的文章將會揭開它的神秘面紗,下面就是文章的具體介紹,望你瀏覽完以下的內(nèi)容會有所收獲。
1.建立四個表:
- create table client(
- c_id int identity(1,1),
- c_name nvarchar(255) unique,
- c_pass nvarchar(255),
- c_sex bit,
- c_mail varchar(255),
- c_qq varchar(255),
- primary key(c_id)
- );
- create table album_kind(
- k_id int identity(1,1),
- k_name nvarchar(255),
- k_desc nvarchar(255),
- primary key(k_id)
- );
- create table album(
- a_id int identity(1,1),
- a_name nvarchar(255),
- a_desc nvarchar(255),
- a_create_date datetime,
- a_times bigint,
- c_id int,
- k_id int,
- primary key(a_id),
- foreign key(c_id) references client(c_id) on delete cascade,
- foreign key(k_id) references album_kind(k_id) on delete cascade
- );
- create table album_word(
- aw_id int identity(1,1),
- aw_title nvarchar(255),
- aw_content nvarchar(500),
- commit_date datetime,
- a_id int,
- c_id int,
- primary key(aw_id),
- foreign key(a_id) references album(a_id) on delete cascade,
- foreign key(c_id) references client(c_id) on delete cascade
- );
這時(創(chuàng)建第四個表的時候)SQL Server2000級聯(lián)刪除會報告錯誤:
將 FOREIGN KEY 約束 'FK_album_word_album' 引入表 'album_word' 中將導致循環(huán)或多重級聯(lián)路徑。請指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 約束。[Microsoft][ODBC SQL Server Driver][SQL Server]未能創(chuàng)建約束。請參閱前面的錯誤信息。
2.這時候我們?nèi)サ舻谒膫€表中的級聯(lián)刪除:
"on delete cascade"
再次執(zhí)行。。。。通過
3.創(chuàng)建一個觸發(fā)器可以解決這個問題(接以上1.2步):
- CREATE TRIGGER album_word_client ON client
- FOR INSERT, UPDATE, DELETE
- AS
- delete album_word from album_word join deleted on album_word.c_id = deleted.c_id
完成!
語法:
create trigger 隨便一個名稱(比如b_a) on 表a
- for delete
- as
delete 表b from 表b join deleted on 表b.a表外鍵=deleted.a表主鍵
(當刪除a中某條記錄,b中相關(guān)聯(lián)記錄也會相應(yīng)刪除)
以上的相關(guān)內(nèi)容就是對SQL Server2000級聯(lián)刪除的一些問題的介紹,望你能有所收獲。
【編輯推薦】