Sobes.tech
Junior

Омӯзиши транзаксияҳо дар базаи додаҳо чӣ маъно дорад?

sobes.tech AI

Ҷавоб аз AI

Трансаксияҳо кафолат медиҳанд, ки амалиётҳои бо базаи додаҳо анҷомёфтаи ACID (атомарӣ, мувофиқӣ, ҷудошавӣ ва устуворӣ) мебошанд.

  • Атомарӣ: Ҳама амалиётҳо дар транзаксия ё пурра иҷро мешаванд ё ҳеҷ гоҳ. Агар як амалиёт ноком шавад, ҳамааш баргардонида мешавад.
  • Мувофиқӣ: Транзаксия базаи додаҳоро аз як ҳолати мувофиқ ба ҳолати дигар мебарад. Қоидаҳо (масалан, калидҳои беназири) пешгирӣ мешаванд.
  • Ҷудошавӣ: Ҳар як транзаксия ҳамчун ки танҳо дар систем аст, иҷро мешавад. Тағйиротҳое, ки аз ҷониби як транзаксия анҷом ёфтаанд, то анҷоми он барои дигарон намоён нестанд.
  • Устуворӣ: Пас аз анҷоми муваффақи транзаксия, тағйиротҳои он сабт мешаванд ва ҳатто дар ҳолати хато низ гум намешаванд.

Транзаксияҳо барои таъмин кардани тамомияти маълумот муҳиманд, махсусан вақте ки чанд амалиётҳои вобаста бояд бо ҳам иҷро шаванд ё ҳеҷ гоҳ. Масалан, интиқоли пул аз ҳисоби пасандоз ба ҳисоби ҷорӣ.

-- Оғози транзаксия
START TRANSACTION;

-- Ҳисобро кам кардан
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;

-- Агар амалиёти қаблӣ муваффақ бошад, ба ҳисоби дуюм илова кардан
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;

-- Санҷед, ки ҳарду амалиёт муваффақ буданд ва хато надоштанд
-- IF хато THEN
--   ROLLBACK; -- Баргардонидани ҳама тағйирот
-- ELSE
--   COMMIT; -- Тасдиқи ҳама тағйирот
-- END IF;

-- Гумон мекунем, ки ҳарду фармон бо муваффақият иҷро шуданд, барои намуна
COMMIT; -- Тасдиқи транзаксия
-- ROLLBACK; -- Баргардонидани транзаксия дар ҳолати хато