當前位置:首頁 » 網路管理 » 為什麼要級聯刪除
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

為什麼要級聯刪除

發布時間: 2022-03-08 05:07:40

1. 怎樣用sql語言修改一個表,為它添加外鍵約束,要求允許級聯修改,不允許級聯刪除

alter table 表
add constraint fk_name foreign key(約束列)
references 主表(約束列)
on update cascade
on delete no action

2. SQL sever中要刪除兩個相關聯的表該怎麼進行級聯刪除

------解決方案-------------------------------------------------------- --1、建立一個觸發器(推薦)
create trigger on p for deleteas �0�2delete from spj where pno = (select pno from deleted)go--執行刪除delete from p where pname='螺絲'
--2、級聯刪除
alter table p add constraint pk_p_id primary key (pno)go--為tb創建外健,並指定級聯刪除
alter table spj add constraint fk_spj_aid foreign key (pno) references p(pno) on delete cascadego------解決方案----------------------------------------------------------推薦觸發器控制,可控性比較強
SQL code --1、建立一個觸發器(推薦) create trigger on p for delete as delete from spj where pno = (select pno from deleted) go --執行刪除 delete from p where pname='螺絲' --2、級聯刪除 alter table p add constraint pk_p_id primary key (pno) go --為tb創建外健,並指定級聯刪除 alter table spj add constraint fk_spj_aid foreign key (pno) references p(pno) on delete cascade go
------解決方案--------------------------------------------------------建立測試數據
SQL code if object_id('dbo.SPJ') is not null drop table dbo.SPJ; go if object_id('dbo.P') is not null drop table dbo.P; go create table dbo.P ( pno int not null primary key, pname nvarchar(20) not null ); go create table dbo.SPJ ( sno int not null primary key, pno int not null ); insert into dbo.P select 1, 'type-a' union all select 2, 'type-b' union all select 3, 'type-c'; go insert into dbo.SPJ select 1, 1 union all select 2, 1 union all select 3, 1 union all select 4, 2 union all select 5, 3 union all select 6, 3; go
------解決方案--------------------------------------------------------建議用外鍵約束
先刪除子表在刪除父表
------解決方案-------------------------------------------------------- �0�2個人建議用事務處理。

3. 級聯刪除時是不是一定要有ADD CONSTRAINT這句話來建立外鍵,如果外鍵已經存在呢如圖

外鍵已經存在的情況下,先把之前的刪掉,然後重新創建

4. 級聯更新時為什麼會級聯刪除

資料庫觸發器里設置,默認級聯更新級聯刪除。你是什麼資料庫,sql2000里有設置,有選擇的項。

5. 為什麼網上刪除級聯表之間的數據是在程序中同時操作而不是在資料庫中建立刪除關系

因為級聯刪除有時候是很可怕的,一不小心會刪掉你不要刪除的東西,有些必須刪除的數據但又有約束關系時才用的。

希望我的回答可以幫到你。

6. 為什麼cascade設置為all還是不能級聯刪除

inverse="true"
放棄維護關系你設置為true那當然是不會幫你做級聯刪除了,
另外象一對多這樣的,Hibernate建議是讓一的這一端放棄維護關系,讓多的一端來維護

7. 請教 單向的many-to-one 要實現級聯刪除的效果都有那些方法

就是說我刪除User的相應數據,Room不應該刪除相應的數據,因為還有可能有別的user關聯著room,但我一但刪除了Room,就應該把所關聯的User對象都一並刪除掉。
我的問題跟這個差不多
這個可以看資料庫本身的功能,如oracle,兩個庫的關系可以設置 delete on cascade,這樣,刪除父表數據的時候,子表的統統刪光。 sqlserver也有相同的功能,具體的做法請查相應的手冊
網上找了很久,只找到雙向的,單向的好像說不可以,cascade都沒用,
這個可以看資料庫本身的功能,如oracle,兩個庫的關系可以設置 delete on cascade,這樣,刪除父表數據的時候,子表的統統刪光。 sqlserver也有相同的功能,具體的做法請查相應的手冊
把關系反過來
Room-user建立 one-to-many關系
那樣跟我的本意就相反了,我是想讓每個user有個room ID,而不是讓每個room裡面有所有user
把關系反過來
Room-user建立 one-to-many關系
這個還真不知道 應該不行吧
如果是那樣的話,只好自己用hql處理一下了
我覺得這個問題你是應該在資料庫端解決的吧。
在資料庫設置 delete on cascade 就可以了。。。
個人覺得還是淡化資料庫關系

8. 關於hibernate 級聯刪除方式的疑問,為什麼需要多條delete語句

hibernate就是這樣操作的。沒有update語句已經蠻好了,要求不要太高

9. 很糾結!!!SQL Server資料庫中的表到底要不要設置級聯刪除和級聯添加

如果邏輯需要一定要設置,這樣可以省很多事,還不易出錯

10. 請問SQL資料庫中有一個表中的兩個欄位,同時關聯另一個表中的同一個欄位,要使它級聯刪除應該怎麼做

SQL的外鍵約束可以實現級聯刪除與級聯更新;

ORACLE則只充許級聯刪除。

SQL級聯刪除與級聯更新使用格式:
CREATE TABLE A001(ID INT PRIMARY KEY,NAME VARCHAR(20))
CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE ON UPDATE CASCADE,AGE TINYINT)

ORACLE級聯刪除使用格式:
CREATE TABLE A001(ID INT PRIMAY KEY,NAME VARCHAR2(20))
CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE,AGE NUMBER(2,0))