facebook twitter hatena line email

「Mysql/外部キー」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(外部キー設定)
(外部キー設定)
行1: 行1:
 
==外部キー設定==
 
==外部キー設定==
 
  // 親テーブル
 
  // 親テーブル
  drop table if exists users;
+
  DROP TABLE IF EXISTS users;
  create table users(
+
  CREATE TABLE users(
     id int not null primary key auto_increment,
+
     id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
     name varchar(10)
+
     name VARCHAR(10)
  ) engine=innodb;
+
  ) ENGINE=InnoDB;
  
 
  // 子テーブル
 
  // 子テーブル
  drop table if exists contents;
+
  DROP TABLE IF EXISTS contents;
  create table contents(
+
  CREATE TABLE contents(
     id int not null primary key auto_increment,
+
     id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
     user_id int,
+
     user_id INT,
     foreign key(user_id) references users(id)
+
     FOREIGN KEY(user_id) REFERENCE users(id)
  ) engine=innodb;
+
  ) ENGINE=InnoDB;
 
   
 
   
  insert into users(name) values('test1');
+
  INSERT INTO users(name) VALUES('test1');
 
   
 
   
  insert into contents(user_id) values(1); // 成功
+
  INSERT INTO contents(user_id) VALUES(1); // 成功
  insert into contents(user_id) values(4); // 失敗
+
  INSERT INTO contents(user_id) VALUES(4); // 失敗

2016年8月15日 (月) 15:32時点における版

外部キー設定

// 親テーブル
DROP TABLE IF EXISTS users;
CREATE TABLE users(
   id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
   name VARCHAR(10)
) ENGINE=InnoDB;
// 子テーブル
DROP TABLE IF EXISTS contents;
CREATE TABLE contents(
   id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
   user_id INT,
   FOREIGN KEY(user_id) REFERENCE users(id)
) ENGINE=InnoDB;

INSERT INTO users(name) VALUES('test1');

INSERT INTO contents(user_id) VALUES(1); // 成功
INSERT INTO contents(user_id) VALUES(4); // 失敗