SQL外來鍵約束的含義及建立
建立外來鍵約束可以對sql語句的增刪改有約束作用。
外來鍵取值規則:空值或參照的主鍵值。
(1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。
(2)更新時,不能改為主鍵表中沒有的值。
(3)刪除主鍵表記錄時,你可以在建外來鍵時選定外來鍵記錄一起級聯刪除還是拒絕刪除。
(4)更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。
舉例如下:
建立表並插入語句
CREATE TABLE t_group(
id INT PRIMARY KEY,
NAME VARCHAR(30)
)
INSERT INTO t_group VALUES(1,'group1');
INSERT INTO t_group VALUES(2,'group2');
CREATE TABLE t_user(
id INT PRIMARY KEY,
NAME VARCHAR(30),
groupid INT FOREIGN KEY REFERENCES t_group(id)
)
INSERT INTO t_user VALUES(1,'user1',1);
INSERT INTO t_user VALUES(2,'user2',2);
其中,t_user是主表,id列是主鍵,groupid是在表t_group(id)的外來鍵
INSERT INTO t_user VALUES(3,'user3',3);
以上語句因為插入groupid=3,違反外來鍵約束。
插入非空值時,如果主鍵表中沒有這個值,則不能插入。
DELETE FROM t_group WHERE id=2
UPDATE t_group SET id=3 WHERE id=1
如果需要修改外來鍵約束,比如,要在外來鍵上允許級聯修改,但限制刪除,則執行下面語句。
ALTER TABLE t_user DROP CONSTRAINT FK_T_USER_GROUPID
ALTER TABLE t_user ADD CONSTRAINT FK_T_USER_GROUPID FOREIGN KEY(GroupID)
REFERENCES T_GROUP(ID) ON UPDATE CASCADE ON DELETE no action
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2157/viewspace-2798022/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 外來鍵約束
- Javaweb-約束-外來鍵約束JavaWeb
- 關於外來鍵約束
- 約束外來鍵筆記筆記
- oracle外來鍵約束的總結Oracle
- AppBoxFuture(七): 分散式外來鍵約束APP分散式
- 教你mysql如何增加外來鍵約束MySql
- mysql不能新增外來鍵約束怎麼辦MySql
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- mysql~資料完整性考慮~外來鍵約束MySql
- 生成指令碼,得到所有表的外來鍵約束,然後刪除並重建這些約束指令碼
- 聊聊Oracle外來鍵約束(Foreign Key)的幾個操作選項Oracle
- Mysql-基本練習(06-唯一約束、外來鍵約束、新增、刪除單列)MySql
- SQL約束SQL
- SQL Server 資料表程式碼建立約束SQLServer
- MariaDB資料庫的外來鍵約束例項程式碼介紹詳解資料庫
- 批量刪除MSSQL 中主外來鍵約束SQL
- 資料遷移無法新增外來鍵約束,錯誤程式碼 1215
- mysql建立外來鍵語句MySql
- 主鍵約束、唯一約束和唯一索引索引
- [資料庫]資料庫中為什麼不推薦使用外來鍵約束資料庫
- 【MySQL】MySQL進階(外來鍵約束、多表查詢、檢視、備份與恢復)MySql
- Laravel 學習總結二:get () 和 first () 的區別、@each () 的用法和新增外來鍵約束Laravel
- SQL教程——常見的約束型別SQL型別
- 《資料庫系統概論》5.0——常見約束 大學生學習筆記(主鍵 外來鍵)資料庫筆記
- [20180423]關於閃回表與主外來鍵約束.txt
- ts函式約束定義函式
- ts類介面約束定義
- sql運算元據庫(3)-->外來鍵約束、資料庫表之間的關係、三大正規化、多表查詢、事務SQL資料庫
- Mysql關於資料庫是否應該使用外來鍵約束詳解說明創磅MySql資料庫
- SQL Server實戰三:資料庫表完整性約束及索引、檢視的建立、編輯與刪除SQLServer資料庫索引
- django | 為 model 定義邏輯外來鍵Django
- MySQL 中的約束及相關操作MySql
- 【學習】SQL基礎-014-約束SQL
- [20231115]建立enable novalidate約束2.txt
- MySQL學習筆記——建立與約束MySql筆記
- MYSQL的外來鍵MySql
- Promise含義及基本用法Promise