MySql вставлять данные в несколько таблиц одновременно - PullRequest
0 голосов
/ 26 апреля 2010

У меня есть запрос на вставку данных в несколько таблиц ..

У меня есть две таблицы. один - таблица элементов, а второй - таблица полей.

itemid из таблицы элементов в таблице полей.

Я хочу вставить данные в обе таблицы по одному запросу за раз.

Есть идеи по этому поводу?

Ответы [ 3 ]

1 голос
/ 26 апреля 2010

Вам следует рассмотреть возможность использования двух INSERT операций, заключенных в транзакцию . Транзакция заставит несколько операций действовать атомарно. Обратите внимание, что для использования транзакций вам потребуется использовать механизм хранения InnoDB в MySQL.

0 голосов
/ 03 сентября 2010

Может быть, триггер поможет. Я приведу пример для этого.

Предположим, у вас есть таблица ITEM с полем ITEM_ID, например:

ITEM
---
ITEM_ID (PK)

Другая таблица ITEM_DETAIL с некоторыми другими полями:

ITEM_ID
---
ITEM_ID (PK auto_increment)
ITEM_NAME

Затем создайте триггер, который будет вызываться при вставке. Как это:

CREATE TRIGGER `ITEM_DETAIL_INSERTION` AFTER INSERT ON `ITEM_DETAIL`
FOR EACH ROW
BEGIN
INSERT INTO `ITEM` (`ITEM_ID`) VALUES (NEW.ITEM_ID);
END;

Этот триггер сработает при вставке в таблицу ITEM_DETAIL. Это позволяет вам не писать явно дополнительный код для вставки в таблицу ITEM. Обратите внимание, что вы должны изменить свой код для вставки в ITEM_DETAIL.

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

0 голосов
/ 03 сентября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...