В MySQL у меня есть три таблицы: projects
, tags
и tags_posts
.MySQL: вставлять данные в таблицы с внешними ключами
tags_posts
представляет собой таблицу между projects
и tags
, который держит project_id
и tag_id
в качестве внешних ключей. Это, поэтому я могу легко выбрать все теги для project_id = x
или выбрать все проекты для tag_id = y
.
Конечно, я хочу добавить проекты в базу данных. Я узнал о START TRANSACTION;
и COMMIT;
, так что запросы будут выполнены вообще или вообще не будут выполняться. Но какой запрос я должен использовать для INSERT
, SELECT
и UPDATE
данных для этих трех таблиц сразу?
Я думал об использовании: INSERT INTO projects([column-1], [column-2], [column-N]) VALUES([value-1], [value-2], [value-N]);
INSERT INTO tags_posts(tag_id, project_id) VALUES(1, LAST_INSERT_ID());
INSERT INTO tags(tag_id, tag_name) VALUES(LAST_INSERT_ID(), 'php');
MySQL Workbench дает ошибку 1452: ограничение внешнего ключа не выполняется. PHPMyAdmin зависает при выполнении этого запроса. Кто может помочь мне с правильными запросами до INSERT
, UPDATE
или SELECT
для этих трех таблиц?
Вы должны вставить в 'tags_posts' LAST, после того, как строки были вставлены в' теги' и 'проекты'. –
Конечно, это звучит разумно! Но, кроме того, мои запросы действительны? –