Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 7095|Відповідь: 0

Транзакції та збережені процедури, що лежать в основі бази даних

[Копіювати посилання]
Опубліковано 15.03.2019 22:45:21 | | | |


Передмова


Минулого разу я планував організувати весь базовий контент SQL, але помітив, що час починає рухатися раніше, ніж я це помітив. Ця стаття продовжується нижче.


Текст


Спочатку створимо потрібні нам таблиці



Спочатку виконаємо SQL-оператор


Цей код віднімає залишок 0001 на 1000 і залишок 0002 на 1000. Але ми додали обмеження, коли будували таблицю, і баланс має бути більшим або рівним 10.

Результати такі:
                  

Отже, ця помилка виконання коду: "Оператор UPDATE конфліктує з обмеженням CHECK "CH_balance". Конфлікт виникає в базі даних "DemoDb" з таблицею "dbo. Bank", стовпець 'balance'。” 。 Якщо одне твердження є помилкою, то чи було успішно виконано інше.

Результати запиту такі:
                     

Побачимо, що інша SQL-оператор не матиме помилок, але все одно не робить успішного фіксування. Ось що ми розкриємо для вас.

#Транзакції

Що таке транзакція?
Строго кажучи, якщо операція задовольняє атомарність, стійкість, ізоляцію та узгодженість, тоді ця операція називається транзакцією.
Автоматично надсилайте транзакції: у SQL Server. За замовчуванням кожна SQL-оператор є транзакцією.
Показувати транзакції: Кожна транзакція починається явно з виписки BEGIN TRANSACTION і закінчується явно випискою COMMIT або ROLLBACK.



Демо, яке ми щойно згадали вище, закінчилося Rollback, тому виконання SQL не діяло. Дані не були успішно змінені.

У фактичній розробці та застосуванні ми зазвичай створюємо шар транзакцій поза оператором без запиту, щоб забезпечити цілісність і узгодженість даних відповідно до реальних потреб. Або роби все, або не роби все.

Існують дві системні змінні, які фіксують несправний SQL файлу. - @@rowcount повертає кількість пошкоджених рядків, @@error повертає неправильне кодування

Давайте використаємо ці дві системні змінні, щоб визначити, чи є помилка в SQL, і виконати два вищезазначені SQL-оператори.



#Збережені процедури

Значення: Інкапсулюйте виконаний процес (який може бути складним) у ім'я, а потім використовуйте це ім'я для виконання процесу.



>
Процедури збереження без параметрів


>Збережені процедури з параметрами



>Збережена процедура з поверненим значенням



Спробуй catch у базі даних



Існують також збережені процедури з параметрами за замовчуванням, які згадувалися в попередній статті про пагінацію.


Епілог


Збережені процедури частіше використовуються у наших реальних проєктах, у багатьох давніх системах, бізнес-логіка написана у збережених процедурах, а люди, які стоять за ними, підтримують її, і вони просто хочуть за кілька хвилин вдарити собаку по голові. Загалом, бізнес-логіка записується в коді, але кількість разів, коли дані читаються з бази даних, а бізнес-логіка записується у процесі зберігання. Минулого року дуже складну низку бізнес-логіки в проєкті компанії було перенесено на процес зберігання, що збільшило швидкість у десятки разів. Звісно, особливі обставини розглядаються особливо. Конкретне застосування залежить від конкретної ситуації.






(Примітка: вищенаведений матеріал — це навчальні нотатки року, якщо є щось недоречне, будь ласка, виправте це!) )









Попередній:Я відчуваю ставлення до системи обслуговування клієнтів великих компаній
Наступний:Відео з Andale HCNP та HCIE
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com