そのため、キー「skillid」でリンクされた 2 つのテーブルがあります。
skills
+-----------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+----------------+
| skillid | int(11) | NO | PRI | NULL | auto_increment |
| skillname | varchar(30) | NO | | NULL | |
+-----------+-------------+------+-----+---------+----------------+
students_skills
+-----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------+------+-----+---------+----------------+
| ssid | int(11) | NO | PRI | NULL | auto_increment |
| studentid | int(11) | NO | MUL | NULL | |
| skillid | int(11) | NO | MUL | NULL | |
+-----------+---------+------+-----+---------+----------------+
複数の行をスキル テーブルに挿入し、作成された ID に基づいてこれらを student_skills に挿入しようとしています。LAST_INSERT_ID() 関数の使用を検討しています。
INSERT INTO skills (skillid , skillname)
VALUES(NULL,'being grateful for help'); # generate ID by inserting NULL
INSERT INTO students_skills (ssid, studentid, skillid)
VALUES(LAST_INSERT_ID(),'1', '2'); # use ID in second table
しかし、1 つの mysql テーブルで一度に複数の行に対してこれを行う方法がわかりませんでした。すべての行に対して上記の 4 行を単純に複製すると、エラーが発生します。
エラー: #1452 - 子行を追加または更新できません: 外部キー制約が失敗しました (
empology
.students_skills
, CONSTRAINTstudents_skills_ibfk_2
FOREIGN KEY (skillid
) REFERENCESskills
(skillid
))
私は正しい方向に進んでいますか?結合も調べましたが、この方法は私にとってより理にかなっています。
ヘルプや便利なリンクをありがとう。