1. 程式人生 > >MySQL中外來鍵設定詳解

MySQL中外來鍵設定詳解


例項一:
4.1
CREATE TABLE parent(id INT NOT NULL,
                    PRIMARY KEY (id)
) TYPE=INNODB;                      -- type=innodb 相當於 engine=innodb
CREATE TABLE child(id INT, parent_id INT,
                   INDEX par_ind (parent_id),
                   FOREIGN KEY (parent_id) REFERENCES parent(id)
                     ON DELETE CASCADE
) TYPE=INNODB;
向parent插入資料後,向child插入資料,插入時,child中的parent_id的值只能是parent中有的資料,否則插入不成功;
刪除parent記錄時,child中的相應記錄也會被刪除;-->因為: on delete cascade
更新parent記錄時,不給更新;-->因為沒定義,預設採用restrict.
4.2
若child如下:
mysql>
create table child(id int not null primary key auto_increment,parent_id int,
index par_ind (parent_id),
constraint fk_1 foreign key (parent_id) references
parent(id) on update cascade on delete restrict)
type=innodb;
用上面的:
1).
則可以更新parent記錄時,child中的相應記錄也會被更新;-->因為: on update cascade
2).
不能是子表操作,影響父表.只能是父表影響子表.
3).
刪除外來鍵:
alter table child drop foreign key fk_1;
新增外來鍵:
alter table child add constraint fk_1 foreign key (parent_id) references
parent(id) on update restrict on delete set null;

(5) 多個外來鍵存在:

相關推薦

MySQL外來設定

例項一: 4.1 CREATE TABLE parent(id INT NOT NULL,                     PRIMARY KEY (id) ) TYPE=INNODB;                      -- type=innodb 相當於 engine=innodb CR

Django外來使用

在寫專案的過程中我們不可避免的會使用到外來鍵這個東西,那麼Django中是怎樣來使用外來鍵的呢? 瞭解外來鍵 在MySQL中,表有兩種引擎,一種是InnoDB,另外一種是myisam。如果使用的是InnoDB引擎,是支援外來鍵約束的。外來鍵的存在使得ORM框架在處理表關係的時候異常的

Mysql 外來和例項

外來鍵具有保持資料完整性和一致性的機制,對業務處理有著很好的校驗作用。 ============================白話文簡介================================= user 表:id 為主鍵 profile 表: uid 為主鍵 簡單來說,若表 profile 的

mysql where in 用法

MySQL這裏分兩種情況來介紹 1、in 後面是記錄集,如: select * from table where uname in(select uname from user); 2、in 後面是字符串,如: select * from table where uname

MySQL外來的定義、作用、新增和刪除

1 簡介 在實際開發的專案中,一個健壯資料庫中的資料一定有很好的參照完整性。例如學生檔案和成績單兩張表,如果成績單中有張三的成績,學生檔案中張三的檔案卻被刪除了,這樣就會產生垃圾資料或者錯誤資料。為了保證資料的完整性,將兩張表之間的資料建立關係,因此就需要在成績

MySqlBlob欄位

BLOB型別的欄位用於儲存二進位制資料 MySQL中,BLOB是個型別系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,這幾個型別之間的唯一區別是在儲存檔案的最大大小上不同。 MySQL的四種BLOB型別 型別 大小(單位:位元組) Tiny

Java虛擬機器(JVM)的記憶體設定

在一些規模稍大的應用中,Java虛擬機器(JVM)的記憶體設定尤為重要,想在專案中取得好的效率,GC(垃圾回收)的設定是第一步。 PermGen space:全稱是Permanent Generation space.就是說是永久儲存的區域,用於存放Class和Meta資

mysql外來設定的注意點

外來鍵是用於兩個表的資料之間建立連線,可以是一列或者多列,即一個表可以有一個或多個外來鍵。外來鍵可以不是這個表的主鍵,但必須和另外一個表的主鍵相對應(欄位的型別和值必須一樣)。帶有主鍵的那張表稱為父表,含外來鍵的是子表,必須先刪除外來鍵約束才能刪除父表。

SQL的主外來約束及用途

SQL的主鍵和外來鍵的作用: 外來鍵取值規則:空值或參照的主鍵值。 (1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。 (2)更新時,不能改為主鍵表中沒有的值。 (3)刪除主鍵表記錄時,你可以在建外來鍵時選定外來鍵記錄一起級聯刪除還是拒絕刪除。 (4)更新主鍵記錄時

mysqlSQL執行過程

 mysql執行一個查詢的過程,到底做了些什麼:   客戶端傳送一條查詢給伺服器; 伺服器先

Mysql外來設定的CASCADE、NO ACTION、RESTRICT、SET NULL

今天在使用Navicat for mysql設計表時,在設定外來鍵的時候,刪除時和更新時兩列有四個值可以選擇:CASCADE、NO ACTION、RESTRICT、SET NULL,自己全親自試了一遍,它們的區別如下: CASCADE:父表delete、up

MySQL外來設定的的 Cascad…

   . cascade方式 在父表上update/delete記錄時,同步update/delete掉子表的匹配記錄     . set null方式 在父表上update/delete記錄時,將子表上匹配記錄的列設為null 要注意子表的外來鍵列不能為not null      . No action方式

Python操作mysql的pymysql模塊

安裝 5.6 alloc 就是 clas abs body .cn pda 文章轉自:https://www.cnblogs.com/wt11/p/6141225.html Python中操作mysql的pymysql模塊詳解 前言 pymsql是Python中操作MyS

【轉】Python操作mysql的pymysql模塊

定義 padding 參數化查詢 finall 支持 順序 執行sql mysq syntax Python中操作mysql的pymysql模塊詳解 前言 pymsql是Python中操作MySQL的模塊,其使用方法和MySQLdb幾乎相同。但目前pymysql支持p

MySql多對多關係外來的應用

業務需求:使用者表r_user儲存使用者名稱等資訊。現需要給每個使用者設定工作基地,一個使用者可以有多個工作基地,多個使用者也可以有一個工作基地,即多對多關係。(外來鍵,若有兩個表A,B,C是A的主鍵,而B中也有C欄位,則C就是表B的外來鍵,外來鍵約束主要用來維護兩個表之間資料的一致性) 設計方

Hadoop MapReducemap任務數量設定

首先注意的是在Hadoop Streaming 中可以通過-D mapred.map.tasks=(你想要設定的map數量) 來確定map任務的個數, goal_num = mapred.map.tasks 但是這裡需要注意的是,只有在這個值大於hadoop中計算的默認個

mysql資料庫的information_schema資料庫

mysql 資料庫在安裝完成後,有一個自帶的資料庫,  information_schema 這個資料庫存放的是資料庫和資料表的元資訊。 該資料庫下有一張表叫schemata表。 這個表記錄的是mysql上所有的資料庫資訊。 實際上我們使用的show databases 命

Net Core資料庫事務隔離——以Dapper和Mysql為例

原文: Net Core中資料庫事務隔離詳解——以Dapper和Mysql為例 Net Core中資料庫事務隔離詳解——以Dapper和Mysql為例 事務隔離級別 準備工作 Read uncommitted 讀未提交 Read

php幾種常見安全設定

php中幾種常見安全設定詳解  另外,目前鬧的轟轟烈烈的SQL Injection也是在PHP上有很多利用方式,所以要保證安全,PHP程式碼編寫是一方面,PHP的配置更是非常關鍵。 我們php手手工安裝的,php的預設配置檔案在 /usr/local/apache2/conf/ph

c++ builder 的 XMLDocument 類(11) -讀取和設定版本號

//--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //------------------------------------