亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

數據庫中restrict和casecade是什么意思?

數據庫中restrict和casecade是什么意思?

慕村9548890 2018-12-15 19:15:02
數據庫中restrict和casecade是什么意思?
查看完整描述

1 回答

?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

restrict和cascade都是在外碼定義時指定的關鍵字。

外碼所指定的字段取值受限制,可以取兩種值:

  1. 所參照主碼中出現過的值;

  2. 可以取空值。

外碼所指定的字段中數據的增刪改是受到外碼約束的限制的,在數據增刪改時會檢查是否滿足外碼約束條件,當不滿足外碼的條件時,所做的處理與定義外碼時指定的restrict關鍵字或者cascade關鍵字有關。

下面以一個具體例子說明:

設有兩張表:student和class,表定義語句為:

create table class(cno int primary key, cname varchar(20))

create table student(sno int primary key, sname varchar(10), cno int, foreign key(cno) references class(cno) on delete restrict)

第一張表class中,cno是主碼,第二張表student中,sno是主碼,cno是外碼,外碼的取值必須在class的主碼cno中出現過,或者取空值。注意,在外碼定義時指定了restrict關鍵字,此時,如果從class表中刪除一條數據(即刪除一個班級),student表中恰好有該班級的學生,則會報錯,不允許刪除。

如果在student表的外碼定義時指定的是cascade,即

create table student(sno int primary key, sname varchar(10), cno int, foreign key(cno) references class(cno) on delete cascade)

則表示級聯刪除,刪除class表中的一條數據時,會把student表中對應的數據一起刪除掉。此外,在外碼定義時還可以指定on delete set null,表示刪除class表中的一條數據時,如果student表中有對應的數據,則把這些對應的數據的cno設置為空值NULL。



查看完整回答
反對 回復 2019-01-05
  • 1 回答
  • 0 關注
  • 818 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號