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

Как эффективно вставить данные в несколько таблиц MySQL в одну транзакцию?

Опубликовано в 2025-04-30
Просматривать:529

How to Efficiently Insert Data into Multiple MySQL Tables in a Single Transaction?

mysql вставьте в несколько таблиц

, пытаясь вставить данные в несколько таблиц с одним запросом MySQL, может дать неожиданные результаты. Хотя может показаться, что множественные запросы решат проблему, корреляция идентификатора автоматического интеграмента из пользовательской таблицы с ручным идентификатором пользователя для таблицы профилей представляет собой задачу.

Использование транзакций и последнего_индер_ид ()

для внедрения в множественные tables в одном транзакциях ()

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;
  • начинать транзакцию с «begin;».
  • вставьте в первую таблицу, захватив идентификатор автоматического интеграмента «fast_insert_id ()». "Commit;".
  • Хранение идентификатора автоматического интеграмента в переменной

Альтернативно, хранение идентификатора автоматического введения в переменной позволяет ссылаться на его взыскание. Это может быть достигнуто с помощью:

mysql variable:
  • вставьте в ... Выберите LAST_INSERT_ID () в @mysql_variable_here; Вставьте в Table2 (@mysql_variable_here, ...);

    INSERT INTO ...
    SELECT LAST_INSERT_ID() INTO @mysql_variable_here;
    INSERT INTO table2 (@mysql_variable_here, ...);
    php variable:
  • INSERT ...
    $result = mysql_query("SELECT LAST_INSERT_ID()");
    $id = mysql_result($result, 0);
    INSERT INTO table2 ($id, ...);
независимо от выбранного подхода, рассмотрите потенциальное влияние прерываемого выполнения. В отсутствие транзакций может возникнуть несоответствие в вашей базе данных. Чтобы предотвратить это, оберните операторы вставки в транзакцию, как показано выше.

]

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

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

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

Copyright© 2022 湘ICP备2022001581号-3