Shanraq.org Shanraq.org
Транзакциялар және UPDATE: бәрін өзгерту немесе ештеңені өзгертпеу
IT

SQL: отбасы бюджетін болжамсыз есептеу 2-сабақ (барлығы 4)

Транзакциялар және UPDATE: бәрін өзгерту немесе ештеңені өзгертпеу

Деректі қауіпсіз түзетіп, шоттар арасындағы аударымды бір атомдық әрекет ретінде орындаймыз.

Бұл не үшін қажет

Шоттар арасындағы аударым кемінде екі байланысты жазбадан тұрады. Ақша алу сақталып, қосу сақталмаса, база жоқ ақшаны көрсетеді.

Бейне. Транзакция — екі қақпалы шлюз: қайық не толық өтеді, не су мен қайық бастапқы орнына қайтады.

Алдымен тұтас көрініс

BEGIN IMMEDIATE;

UPDATE transactions
SET note = 'Utilities and rent'
WHERE id = 2;

SELECT changes() AS changed_rows;
COMMIT;

Талдау

ACID атомдық, келісімділік, оқшаулану және тұрақтылықты білдіреді; нақты кепілдік ДҚБЖ-ға байланысты. UPDATE не DELETE алдында дәл сол WHERE бар SELECT орындап, кейін өзгерген жол санын тексеріңіз. COMMIT бекітеді, ROLLBACK аяқталмаған жұмысты қайтарады, SAVEPOINT бір бөлігін қайтарады. Өз шоттарыңыз арасындағы аударым отбасы шығыны емес.

Сабақ картасы

Транзакциялар және UPDATE

Өз сөзіңізбен айтыңыз

  1. Атомдық деген не?
  2. WHERE шартын өзгеріске дейін қалай тексереміз?
  3. Ішкі аударым неге шығын емес?

Тапсырма

Транзакция ішінде Transport лимитін 40 000 теңгеге өзгертіп, оқыңыз; ROLLBACK жасап, ескі мәннің қайтқанын тексеріңіз.

Жобадағы орны

Байланысты бюджет өзгерістері бірге орындалып, бекітуге дейін қайтарыла алады.

Жауаптар

Жауаптарды көрсету
BEGIN;
UPDATE categories SET monthly_limit_tiyn=4000000 WHERE name='Transport';
SELECT monthly_limit_tiyn FROM categories WHERE name='Transport';
ROLLBACK;
SELECT monthly_limit_tiyn FROM categories WHERE name='Transport';

Дереккөздер

Мәтінде қате не теру қатесі кездессе, бізге айтыңыз

Тапсырманы тексеру

Алдымен VS Code-та шешіп, іске қосыңыз — редактор қатені сол жерде көрсетеді. Дайын шешімді осында қойыңыз. Тексеретін — модель: ол қатені атап көрсетеді, бірақ дайын жауапты бермейді.

Тексеру үшін кіру керек. Кіру

Пікірлер (0)

Әзірге пікір жоқ. Бірінші болыңыз.