Intern
Veb pakalpojumā ir nepieciešams reģistrēt pasūtījumu un atskaitīt krājumu no noliktavas tā, lai vai nu abas operācijas tiek saglabātas, vai neviens. Kādi SQL komandas tiek izmantotas, lai ietvertu virkni vaicājumu, un kā rīkoties kļūdas gadījumā pirms apstiprinājuma?
sobes.tech AI
Atbilde no AI
Для обеспечения атомарности операций записи заказа и списания остатка со склада в SQL используют транзакции. Основные команды для обрамления набора запросов:
BEGINилиSTART TRANSACTION— начинает транзакцию.- Выполнение необходимых запросов (например, INSERT заказа и UPDATE склада).
COMMIT— фиксирует изменения, если все операции прошли успешно.ROLLBACK— отменяет все изменения в транзакции при возникновении ошибки до фиксации.
Пример на SQL:
BEGIN;
INSERT INTO orders (...) VALUES (...);
UPDATE stock SET quantity = quantity - ? WHERE product_id = ?;
-- если ошибок нет
COMMIT;
-- если ошибка
ROLLBACK;
В коде при обнаружении ошибки до вызова COMMIT нужно вызвать ROLLBACK, чтобы откатить все изменения и сохранить целостность данных.