Como posso usar uma transação SQL ao executar um conjunto de instruções?

0

Estou perdendo alguma coisa sobre o uso de transações com o MySQL. Eu tenho um script que exclui dados de dados de algumas tabelas e, em seguida, insere dados nessas tabelas. Eu quero reverter tudo (exclusões e inserções concluídas) se houver algum erro. Eu li os documentos do MySQL sobre o assunto e eu entendo que usar START TRANSACTION desabilitará a confirmação automática, mas quando propositalmente causar um erro no meu script, as alterações não serão revertidas (isto é, a transação não está fazendo o que eu esperava).

Encontrei esta pergunta (e outras semelhantes), mas todos eles usam procedimentos armazenados. Eu não quero usar sprocs, eu tenho um arquivo * .sql que eu executo em SQLyog (ferramenta de gerenciamento MySQL), apenas um grupo de declarações.

Aqui está uma versão reduzida do script em que estou trabalhando:

-- Start the transaction
START TRANSACTION;

--  Delete all the table data
--  All other qb_* tables are deleted by CASCADING DELETEs
DELETE FROM 'manfstudio_dev'.'qb_items';
DELETE FROM 'manfstudio_dev'.'qb_inventory_sites';

-- Insert Inventory Site records
INSERT INTO 'manfstudio_dev'.'qb_inventory_sites' ('site_id', 'name') VALUES ('80000002-1477203394', 'CA-Orange');
INSERT INTO 'manfstudio_dev'.'qb_inventory_sites' ('site_id', 'name') VALUES ('80000001-1476941342', 'Drop Ship');

-- Insert Item records
INSERT INTO 'manfstudio_dev'.'qb_items' ('item_id', 'name', 'item_number_type', 'type') VALUES ('8000000A-1484095135', '- Internal Labor -', 'NONE', 'Service');

-- The following insert will throw an exception
INSERT INTO 'manfstudio_dev'.'qb_items' ('item_id', 'name', 'item_numffffber_type', 'type') VALUES ('80000024-1484102389', 'General Device Assembly Labor', 'NONE', 'Service');
INSERT INTO 'manfstudio_dev'.'qb_items' ('item_id', 'name', 'item_number_type', 'type') VALUES ('80000009-1483733754', 'Miscellaneous', 'NONE', 'Service');

-- Commit the transaction
COMMIT;
    
por Steve K 17.01.2017 / 05:54

0 respostas

Tags