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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle定義約束 外來鍵約束Oracle
- SQL的主鍵和外來鍵約束SQL
- Javaweb-約束-外來鍵約束JavaWeb
- SQL SERVER中找出拙劣的約束,索引,外來鍵SQLServer索引
- 資料完整性約束:主鍵、外來鍵、各種約束的建立刪除語句
- oracle外來鍵約束的總結Oracle
- 查詢外來鍵約束、子表欄位等資訊的SQLSQL
- 教你mysql如何增加外來鍵約束MySql
- MySQL禁用恢復外來鍵約束MySql
- Oracle外來鍵約束中NULL的處理OracleNull
- mysql 刪除老是報外來鍵約束MySql
- 【實驗】【外來鍵】小議外來鍵約束對應用程式的影響
- (轉)oracle資料庫中所有外來鍵約束失效SQL語句Oracle資料庫SQL
- AppBoxFuture(七): 分散式外來鍵約束APP分散式
- mysql不能新增外來鍵約束怎麼辦MySql
- mysql啟動和關閉外來鍵約束MySql
- 詳解外來鍵約束(foreign key)
- 遷移後處理外來鍵約束的問題
- PostgreSQL11preview-支援陣列外來鍵約束SQLView陣列
- 外來鍵約束drop table cascade constraintsAI
- Sql Server系列:鍵和約束SQLServer
- 修改外來鍵為validate時需要驗證資料是否符合外來鍵約束
- mysql資料庫匯入外來鍵約束問題MySql資料庫
- mysql~資料完整性考慮~外來鍵約束MySql
- 生成指令碼,得到所有表的外來鍵約束,然後刪除並重建這些約束指令碼
- MySQL·捉蟲動態·DROPDATABASE外來鍵約束的GTIDBUGMySqlDatabaseTiDB
- 資料庫約束 主鍵-唯一性-Check-外來鍵資料庫
- 【Tips】使用SQL生成外來鍵的SQL建立語句SQL
- Mysql-基本練習(06-唯一約束、外來鍵約束、新增、刪除單列)MySql
- 查詢(看)表的主鍵、外來鍵、唯一性約束和索引索引
- 關於外來鍵約束和對應主鍵資訊的查詢指令碼指令碼
- 分散式資料庫環境中,外來鍵約束的問題??分散式資料庫
- ORACLE: 查詢(看)表的主鍵、外來鍵、唯一性約束和索引Oracle索引
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- 解決無法刪除表,提示被外來鍵約束引用
- 建約束(Constraint)時隱式建立索引(Index)及先建立索引後建立約束的區別AI索引Index
- SQL約束SQL
- 聊聊Oracle外來鍵約束(Foreign Key)的幾個操作選項Oracle