PowerDesigner 參照完整性約束(級聯刪除)


 

PowerDesigner 參照完整性約束:

 

限制(Restrict):不允許進行修改或刪除操作。若修改或刪除主表的主鍵時,如果子表中存在子記錄,系統將產生一個錯誤提示。這是缺省的參照完整性設置。

置空(Set Null):如果外鍵列允許為空,若修改或刪除主表的主鍵時,把子表中參照的外鍵列設置為空值(NULL)。

置為缺省(Set Default):如果指定了缺省值,若修改或刪除主表的主鍵時,把子表中參照的外鍵設置為缺省值(Default)。

級聯(Cascade):把主表中主鍵修改為一個新的值時,相應修改子表中外鍵的值;或者刪除主表中主鍵的記錄時,要相應刪除子表中外鍵的記錄。

外鍵級聯刪除的時候,操作主表時會關聯到子表,但是操作子表,不會關聯到主表。

 

以下是幾個參數的含義:

None:父表修改,子表不影響。

Restrict:父表修改,如果子表存在,則出錯。

Cascade:父表修改,如果子表存在,則相應的修改。

Set Null:父表修改,如果子表存在,則相應置空。

Set Default:父表修改,如果子表存在,則相應置默認值。

 

 

另外:

功能:在刪除主表時,自動刪除副表(外鍵約束)相應內容

刪除包含主鍵值的行的操作,該值由其它表的現有行中的外鍵列引用。在級聯刪除中,還刪除其外鍵值引用刪除的主鍵值的所有行。

如:

 

create database temp go use temp go

create table UserInfo ( UserId int identity(1,1) primary key , UserName varchar(20), --用戶名 
password varchar(20) not null --密碼 )
create table UserDetails ( id int identity(1,1) primary key, name varchar(50) not null, --真實姓名
userId int, foreign key (userId) references UserInfo(UserId) on delete cascade )
insert UserInfo values ('ly','jeff') insert UserInfo values('wzq','wzqwzq') insert UserInfo values('lg','lglg') insert UserDetails values('李四',1) insert UserDetails values('王五',2) insert UserDetails values('劉六',3)


 

sqlserver 支持級聯更新和刪除

oracle 只支持級聯刪除

alter table 表名

add constraint 外鍵名

foreign key(字段名)

references 主表名(字段名)

on delete cascade


語法: Foreign Key (column[,...n]) references referenced_table_name[(ref_column[,...n])] [on delete cascade] [on update cascade]

注釋:

column:列名

referenced_table_name:外鍵參考的主鍵表名稱

ref_name:外鍵要參考的表的主鍵列

on delete:刪除級聯

on update:更新級聯

 

此時:Delete From UserInfo Where UserId = 1 就可刪除UserInfo表和UserDetails表的UserId=1 的內容


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM