#mysql
Вопрос:
У меня есть длинный запрос на массовую вставку, который должен выполняться в mysql. Во время работы я не могу обрабатывать исключения. Здесь фрагмент кода и запрос вставки должны повторяться много раз для массовых целей. Теперь моя цель состоит в том, чтобы обработать исключение ниже кода и выполнить следующие инструкции, если одна из них завершится неудачей. Т. е. здесь представлена реляционная транзакция Между Транзакциями и таблицами журналов. Если данные вставлены в таблицу Транзакций, но в таблице журналов возникает ошибка, то родительские данные таблицы транзакций должны быть откатаны.
SELECT 1 INTO @businessProfileId; SELECT 80044 INTO @clientId; CREATE TEMPORARY TABLE IF NOT EXISTS temp_returned_table (AccountingTransactionId BIGINT, BusinessTransactionId INT); TRUNCATE TABLE temp_returned_table; BEGIN; INSERT INTO Transactions (Amount, Time, DateId, TransactionTypeId, BusinessTransactionId, DocumentUrl, Description, VoucherNumber, BusinessProfileId, ClientId, CreationDate, CreatedBy) Values (600.00, '18:28:23', 2231, 33, 1315, NULL , '', 'MBR-2021-000001', 1, 80044, '2021-11-02 19:36:36', 2); SELECT LAST_INSERT_ID() INTO @genratedTransactionId; INSERT INTO JournalLines (AccountId, DRAmount, CRAmount, Description, TransactionId, BusinessProfileId, ClientId, CreationDate, CreatedBy) VALUES (226, 0, 600.00, '', @genratedTransactionId, 1, 80044, '2021-11-02 19:36:36', 2); INSERT INTO JournalLines (AccountId, DRAmount, CRAmount, Description, TransactionId, BusinessProfileId, ClientId, CreationDate, CreatedBy) VALUES (284, 600.00, 0, '', @genratedTransactionId, 1, 80044, '2021-11-02 19:36:36', 2); COMMIT; INSERT INTO temp_returned_table (AccountingTransactionId, BusinessTransactionId) VALUES (@genratedTransactionId, 1315); SELECT * FROM temp_returned_table;