«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как вставить данные в несколько таблиц MySQL одновременно?

Как вставить данные в несколько таблиц MySQL одновременно?

Опубликовано 21 декабря 2024 г.
Просматривать:463

How to Insert Data into Multiple MySQL Tables Simultaneously?

Вставка MySQL в несколько таблиц: нормализация базы данных

Вставка данных в несколько таблиц одновременно в MySQL напрямую не поддерживается. Однако существуют альтернативные подходы для достижения этой функциональности.

Использование транзакций

Чтобы обеспечить согласованность данных в таблицах, рекомендуется использовать транзакции. Транзакции инкапсулируют серию запросов как единое целое, гарантируя, что все запросы либо успешны, либо неуспешны вместе.

Вот пример использования транзакций:

BEGIN;
INSERT INTO users (username, password) VALUES('test', 'test');
INSERT INTO profiles (userid, bio, homepage) VALUES(LAST_INSERT_ID(),'Hello world!', 'http://www.stackoverflow.com');
COMMIT;

Получение значения автоприращения

Чтобы вставить идентификатор автоприращения из таблицы пользователей в таблицу профилей, вы можете использовать функцию LAST_INSERT_ID() . Однако если последующий оператор вставки вставляет в таблицу с собственным столбцом автоинкремента, значение LAST_INSERT_ID() будет обновлено до значения этой таблицы.

Чтобы сохранить исходное значение LAST_INSERT_ID(), вы можете сохранить это в пользовательской переменной внутри транзакции.

Использование MySQL Переменные:

INSERT ...
SELECT LAST_INSERT_ID() INTO @mysql_variable_here;
INSERT INTO table2 (@mysql_variable_here, ...);

Использование языковых переменных:

// PHP example
$mysqli->query("INSERT INTO table1 ...");
$userid = $mysqli->insert_id;
$mysqli->query("INSERT INTO table2 ($userid, ...)");

Внимание

При вставке в базу данных важно учитывать согласованность базы данных. несколько таблиц. В случае прерывания транзакции гарантируют, что все запросы либо будут выполнены полностью, либо не будут выполнены вообще. Без транзакций частичные вставки могут привести к несогласованности.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3