自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

MySQL定義外鍵的方法

數(shù)據(jù)庫(kù) MySQL
MySQL定義外鍵的方法是每個(gè)學(xué)習(xí)MySQL的人都需要掌握的知識(shí),下文就對(duì)MySQL定義外鍵的語(yǔ)句寫法進(jìn)行了詳細(xì)的闡述,供您參考。

外鍵為MySQL帶來(lái)了諸多的好處,下面就為您介紹MySQL定義外鍵的語(yǔ)句寫法,以及MySQL定義外鍵過程中出現(xiàn)錯(cuò)誤的處理方法,供您參考學(xué)習(xí)。

  1. mysql> CREATE TABLE categories (  
  2.       -> category_id tinyint(3) unsigned NOT NULL AUTO_INCREMENT,  
  3.       -> name varchar(30) NOT NULL,  
  4.       -> PRIMARY KEY(category_id)  
  5.       -> ) ENGINE=INNODB;  
  6. Query OK, 0 rows affected (0.36 sec)  
  7.  
  8. mysql> INSERT INTO categories VALUES (1, ‘SQL Server’), (2, ‘Oracle’), (3, ‘PostgreSQL’), (4, ‘MySQL’), (5, ‘SQLite’);  
  9. Query OK, 5 rows affected (0.48 sec)  
  10. Records: 5    Duplicates: 0    Warnings: 0  
  11.  
  12. mysql> CREATE TABLE members (  
  13.       -> member_id INT(11) UNSIGNED NOT NULL,  
  14.       -> name VARCHAR(20) NOT NULL,  
  15.       -> PRIMARY KEY(member_id)  
  16.       -> ) ENGINE=INNODB;  
  17. Query OK, 0 rows affected (0.55 sec)  
  18.  
  19. mysql> INSERT INTO members VALUES (1, ‘test’), (2, ‘admin’);  
  20. Query OK, 2 rows affected (0.44 sec)  
  21. Records: 2    Duplicates: 0    Warnings: 0  
  22.  
  23. mysql> CREATE TABLE articles (  
  24.       -> article_id INT(11) unsigned NOT NULL AUTO_INCREMENT,  
  25.       -> title varchar(255) NOT NULL,  
  26.       -> category_id tinyint(3) unsigned NOT NULL,  
  27.       -> member_id int(11) unsigned NOT NULL,  
  28.       -> INDEX (category_id),  
  29.       -> FOREIGN KEY (category_id) REFERENCES categories (category_id),  
  30.       -> CONSTRAINT fk_member FOREIGN KEY (member_id) REFERENCES members (member_id),  
  31.       -> PRIMARY KEY(article_id)  
  32.       -> ) ENGINE=INNODB;  
  33. Query OK, 0 rows affected (0.63 sec)  

注意:對(duì)于非InnoDB表,F(xiàn)OREIGN KEY子句會(huì)被忽略掉。#p#
如果遇到如下錯(cuò)誤:

  1. ERROR 1005: Can’t create table ‘./test/articles.frm’ (errno: 150) 

請(qǐng)仔細(xì)檢查以下定義語(yǔ)句,常見的錯(cuò)誤一般都是表類型不是INNODB、相關(guān)聯(lián)的字段寫錯(cuò)了、缺少索引等等。

至此categories.category_id和articles.category_id、members.member_id和 articles.member_id已經(jīng)建立外鍵關(guān)系,只有 articles.category_id 的值存在與 categories.category_id 表中并且articles.member_id的值存在與members.member_id表中才會(huì)允許被插入或修改。例如:

  1. mysql> INSERT INTO articles (category_id, member_id, title) VALUES (6, 1, ‘foo’);  
  2. ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test/articles`, CONSTRAINT `articles_ibfk_1` FOREIGN KEY (`category_id`)REFERENCES `categories` (`id`))  
  3.  
  4. mysql> INSERT INTO articles (category_id, member_id, title) VALUES (3, 3, ‘foo’);  
  5. ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`test/articles`, CONSTRAINT `fk_member` FOREIGN KEY (`member_id`) REFERENCES `members` (`member_id`))  
  6.  

可見上面兩條語(yǔ)句都會(huì)出現(xiàn)錯(cuò)誤,因?yàn)樵赾ategories表中并沒有category_id=6、members表中也沒有member_id=3的記錄,所以不能插入。而下面這條SQL語(yǔ)句就可以。

  1. mysql> INSERT INTO articles (category_id, member_id, title) VALUES (3, 2, ‘bar’);  
  2. Query OK, 1 row affected (0.03 sec) 

以上就是MySQL定義外鍵的方法介紹。

 

 

 

 

【編輯推薦】

帶參數(shù)的MySql存儲(chǔ)過程

取得MySQL表信息的語(yǔ)句

mysql UPDATE語(yǔ)句的使用方法

MySQL單表多關(guān)鍵字模糊查詢的實(shí)現(xiàn)

常見MySql字段的默認(rèn)長(zhǎng)度

責(zé)任編輯:段燃 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-11-22 09:43:07

MySQL定義外鍵

2011-05-12 14:33:37

MySQL外鍵

2010-10-19 17:28:08

SQL SERVER外

2010-10-09 10:21:19

MySQL刪除外鍵

2010-10-09 09:55:41

MySQL外鍵

2010-05-17 16:10:39

MySQL數(shù)據(jù)庫(kù)

2010-11-22 10:08:03

Mysql外鍵用法

2010-11-22 09:59:32

MySQL外鍵設(shè)置

2010-05-11 18:46:46

MYSQL 外鍵

2010-09-03 11:52:41

SQL刪除

2010-10-09 09:46:28

MySQL外鍵

2010-11-12 15:19:06

Sql Server外

2010-06-17 17:50:31

SQL Server外

2019-11-05 08:20:13

MySQL數(shù)據(jù)庫(kù)外鍵

2022-06-26 06:32:28

MySQL數(shù)據(jù)庫(kù)維護(hù)

2010-10-09 10:29:29

MySQL外鍵

2010-05-11 19:11:13

MySQL外鍵

2011-09-01 10:56:34

2010-01-05 09:24:42

MySQL外鍵約束

2023-05-31 08:24:20

SQLAlchemyPython
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)