Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Атомарність | Acid
Просунуті Техніки в SQL

bookАтомарність

Атомарність у 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 позначає завершення блоку транзакції.

question mark

Що забезпечує концепція атомарності у контексті транзакцій бази даних?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 3

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Awesome!

Completion rate improved to 4.35

bookАтомарність

Свайпніть щоб показати меню

Атомарність у 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 позначає завершення блоку транзакції.

question mark

Що забезпечує концепція атомарності у контексті транзакцій бази даних?

Select the correct answer

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 3
some-alt