Атомарність
Атомарність у SQL відноситься до однієї з властивостей ACID, яка гарантує використання транзакцій під час виконання запитів до даних за допомогою SQL.
У контексті SQL-баз даних атомарність забезпечує, що всі операції в межах певної логічної одиниці виконуються повністю, або жодна з них не виконується.
Обробка транзакцій у SQL
Основні характеристики
-
Відкат (Rollback): Якщо якась частина не виконується (наприклад, через помилку або порушення обмеження), вся транзакція скасовується, а зміни повертаються до початкового стану;
-
Фіксація (Commit): Якщо всі операції виконані успішно, транзакція фіксується, і зміни стають постійними.
Створення транзакцій у SQL
У SQL кожен окремий оператор розглядається як транзакція.
Однак можна вручну створювати транзакції, що містять більше ніж одну інструкцію.
Уявімо ситуацію, коли маємо дві таблиці:
-
таблиця
BankAccounts
, яка містить такі стовпці:account_number
(Primary Key),account_holder
таbalance
; -
таблиця
UserLogs
зі стовпцями:account_number
,action
,timestamp
тощо. Комбінаціяaccount_number
таtimestamp
є складовим первинним ключем цієї таблиці.
Розглянемо ситуацію, коли необхідно створити новий банківський рахунок і одночасно згенерувати запис у журналі, щоб зафіксувати додавання нового рахунку.
Важливо, щоб ці дві дії — додавання рахунку та реєстрація події — розглядалися як єдиний логічний блок і були обгорнуті в одну транзакцію. Ось дуже простий приклад того, як це можна реалізувати за допомогою транзакції:
-- Begin the transaction
BEGIN;
-- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0
INSERT INTO BankAccounts (account_number, account_holder, balance)
VALUES (109, 'Emma Watson', 0);
-- Step 2: Add log entry if the account was added
-- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109
INSERT INTO UserLogs (account_number, action)
VALUES (109, 'New account added');
-- Commit the transaction, making the changes permanent
COMMIT;
У наведеному вище запиті використовується блок BEGIN
, щоб позначити, що всі наступні оператори мають розглядатися як єдине ціле — якщо хоча б один з них не буде виконано, жоден з операторів не повинен бути виконаний.
Ключове слово COMMIT
позначає завершення блоку транзакції.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 4.35
Атомарність
Свайпніть щоб показати меню
Атомарність у SQL відноситься до однієї з властивостей ACID, яка гарантує використання транзакцій під час виконання запитів до даних за допомогою SQL.
У контексті SQL-баз даних атомарність забезпечує, що всі операції в межах певної логічної одиниці виконуються повністю, або жодна з них не виконується.
Обробка транзакцій у SQL
Основні характеристики
-
Відкат (Rollback): Якщо якась частина не виконується (наприклад, через помилку або порушення обмеження), вся транзакція скасовується, а зміни повертаються до початкового стану;
-
Фіксація (Commit): Якщо всі операції виконані успішно, транзакція фіксується, і зміни стають постійними.
Створення транзакцій у SQL
У SQL кожен окремий оператор розглядається як транзакція.
Однак можна вручну створювати транзакції, що містять більше ніж одну інструкцію.
Уявімо ситуацію, коли маємо дві таблиці:
-
таблиця
BankAccounts
, яка містить такі стовпці:account_number
(Primary Key),account_holder
таbalance
; -
таблиця
UserLogs
зі стовпцями:account_number
,action
,timestamp
тощо. Комбінаціяaccount_number
таtimestamp
є складовим первинним ключем цієї таблиці.
Розглянемо ситуацію, коли необхідно створити новий банківський рахунок і одночасно згенерувати запис у журналі, щоб зафіксувати додавання нового рахунку.
Важливо, щоб ці дві дії — додавання рахунку та реєстрація події — розглядалися як єдиний логічний блок і були обгорнуті в одну транзакцію. Ось дуже простий приклад того, як це можна реалізувати за допомогою транзакції:
-- Begin the transaction
BEGIN;
-- Insert a new bank account with account number 109, account holder Emma Watson, and initial balance of 0
INSERT INTO BankAccounts (account_number, account_holder, balance)
VALUES (109, 'Emma Watson', 0);
-- Step 2: Add log entry if the account was added
-- Insert a log entry into the UserLogs table indicating that a new account was added with account number 109
INSERT INTO UserLogs (account_number, action)
VALUES (109, 'New account added');
-- Commit the transaction, making the changes permanent
COMMIT;
У наведеному вище запиті використовується блок BEGIN
, щоб позначити, що всі наступні оператори мають розглядатися як єдине ціле — якщо хоча б один з них не буде виконано, жоден з операторів не повинен бути виконаний.
Ключове слово COMMIT
позначає завершення блоку транзакції.
Дякуємо за ваш відгук!