MySQL 關閉子表的外來鍵約束檢察

2021-09-06 22:25:38 字數 1157 閱讀 4613

準備:

定義乙個教師表、乙個學生表;在學生表中引用教師表id

create table teachers(teacherid int not null auto_increment primary key,teachername varchar(8));

create table students(studentid int not null auto_increment primary key,teacherid int not null,studentname varchar(8),

constraint fk_students_teacherid foreign key (teacherid) references teachers(teacherid) on delete no action on update cascade);

第一步:

插入乙個老師

插入乙個學生:

insert into students(studentname,teacherid) values('nameb',100);--可以知道沒有這個教師號、所以插入會出錯。

不過有沒有辦法可以插入一條不合理的資料呢?辦法還是有的

第二步:

set foreign_key_checks = 0; 這樣就可以了。

第三步:

設定回預設值、保持外來鍵約束檢察。

set foreign_key_checks =1;

總結:這篇隨筆寫的特別的亂、我想說的重點就是 set foreign_key_checks =0;時外來鍵約束是沒有用的。這時可以對子表進行違反外來鍵約束的插入。

不到萬不得以不要用這個。

mysql約束與外來鍵 MySQL 外來鍵與約束

外來鍵的建立 建表如下 create table parent id int not null,primary key id type innodb create table child id int,parent id int,foreign key parent id references pa...

MySQL 外來鍵約束

建立測試主表.id 是主鍵.create table test main id int,value varchar 10 primary key id 建立測試子表.create table test sub id int,main id int,value varchar 10 primary k...

MySQL外來鍵約束

innodb型別表有乙個其他儲存引擎不支援的特性 外來鍵約束。當b表的外來鍵關聯到a表的主鍵時 表b是父表a表的子表 如果刪除了a表,那麼b中的外來鍵則仍然關聯著乙個不存在的表的主鍵。而外鍵約束則設定了當約束被破壞時應該應用的的規則,包括防止約束破壞。建立乙個外來鍵約束的語法是 foreign ke...