Sobes.tech
Middle

Кои команди за управление на транзакции знаете?

sobes.tech AI

Отговор от AI

BEGIN (може да бъде неявен), COMMIT, ROLLBACK.

  • BEGIN: Започва нова транзакция. Не е задължително за първия оператор DML в сесията, тъй като транзакцията ще започне неявно.

    BEGIN TRANSACTION;
    
  • COMMIT: Запазва всички промени, направени в текущата транзакция, и я приключва.

    COMMIT;
    
  • ROLLBACK: Отменя всички промени, направени в текущата транзакция, и я приключва.

    ROLLBACK;
    

Някои системи за управление на бази данни също поддържат:

  • SAVEPOINT: Установява точка за запазване в рамките на текущата транзакция. Позволява връщане към тази точка, без да се отменя цялата транзакция.

    SAVEPOINT my_savepoint;
    
  • ROLLBACK TO SAVEPOINT: Отменя промените до посочената точка за запазване.

    ROLLBACK TO SAVEPOINT my_savepoint;
    
  • RELEASE SAVEPOINT: Премахва точката за запазване.

    RELEASE SAVEPOINT my_savepoint;
    

Пример за последователност от команди:

BEGIN; -- започване на транзакция

INSERT INTO users (name) VALUES ('Alice'); -- изпълнение на операция

SAVEPOINT before_update; -- установяване на точка за запазване

UPDATE products SET price = price * 1.1 WHERE id = 1; -- изпълнение на друга операция

-- Ако нещо се обърка с актуализацията, може да се върне към точката за запазване
-- ROLLBACK TO SAVEPOINT before_update;

-- Ако всичко е наред, потвърждаване на промените
COMMIT; -- приключване на транзакцията и запазване на промените

-- Ако трябва да отмените цялата транзакция след BEGIN
-- ROLLBACK;

Разбирането на тези команди е критично за гарантиране целостта на данните в приложения, работещи с релационни бази данни.