質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

3回答

1383閲覧

MySQL:主キーが更新された時、外部キーも同時に更新したい

nyan_engineer

総合スコア30

MySQL Workbench

MySQL Workbenchは、オープンソースのデータベースモデリングツールです。ビジュアルなデータベース設計・SQL開発・サーバー設定・ユーザー管理・バックアップといった様々な管理ツールを備えます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2019/01/21 06:45

MySQLにて、「社員情報テーブル」と「社員状況テーブル」の二つのテーブルを以下の制約のもとに作成しました。

・社員情報テーブル
employee_id:主キー、int、NOT NULL、auto_increment

・社員状況テーブル
employee_info_id:外部キー(references 社員情報テーブル.employee_id)、int

このとき、社員情報テーブルのあるカラムにデータをINSERTしてemployee_idが自動採番された時、
自動的にemployee_info_idも更新(INSERT)することはできますでしょうか?
(または自動採番された値をemployee_info_idにも反映させる)

調べたところ、外部キーにCASCADEを付けることにより主キーに連動して値が更新されるようなのですが、
どうもうまくできません。

ご教授いただきますようお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2019/01/21 06:55

MySQLで「1つのSQL文で複数のテーブルに対してINSERTを行う」ような方法はないかと思うのですが、今回実装したい状況はどのような状況でしょうか。
nyan_engineer

2019/01/21 07:04

データ入力用のフォームがあるのですが、これが質問内にある二つのテーブルの値を参照しております。 社員データの「新規登録」により新しくemployee_idが生成されることにより、employee_info_idも自動的に作成できないかというものです。 分かりづらく申し訳ありません。
guest

回答3

0

ベストアンサー

社員情報テーブルにレコードが作られてemployee_idが採番されないと社員状況テーブルにはレコードが作れないですよね。
基本は社員情報テーブルの新規レコードを作った後にLAST_INSERT_ID()で取得してきて別INSERTを社員状況テーブルにすることになります。

投稿2019/01/21 07:04

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nyan_engineer

2019/01/21 07:30

ご回答いただきありがとうございます。 LAST_INSERT_ID()を使用すればよかったのですね。。 ずっと悩んでいた一連の処理が出来そうです。ありがとうございます。
nyan_engineer

2019/01/22 12:41

ご丁寧にありがとうございます。 参考にさせていただきます。
guest

0

INSERT とそのリンク先の mysql_insert_id() を熟読されては?

投稿2019/01/21 07:38

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

  • 新規でつくって
  • 更新して
  • 古いのを削除

とするのが妥当では?
そもそもキーになるコードが変更になるというは外部キーの概念と
真逆の行為なので、一般的な機能として想定する必要はないでしょう・・・

投稿2019/01/21 07:22

yambejp

総合スコア114773

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nyan_engineer

2019/01/21 07:32

ご回答いただきありがとうございます。 確かにその通りですね。。 まだまだ勉強不足ですので、改めて学習してみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問