முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 8 · பாடம் 4 இன் 4பாடத்திட்டத்தில் 32/57~10 min
தொகுதி பாடங்கள் (4/4)

பரிவர்த்தனைகள்: அனைத்தும் அல்லது எதுவும் இல்லை

ஒரு பரிவர்த்தனை என்பது தரவுத்தளம் கருதும் செயல்பாடுகளின் குழுவாகும் ஒற்றை அலகு: ஒன்று அவை அனைத்தும் வெற்றி பெறுகின்றன, அல்லது அவர்களில் யாரும் வெளியேற மாட்டார்கள் a தடயம். ஒரு வரிசையின் போது முரண்பாடுகளிலிருந்து உங்களைப் பாதுகாத்துக் கொள்வது இதுதான் UPDATE/INSERT/DELETE நிலையானதாக இருக்க வேண்டும்.

தொடரியல்

SQL
BEGIN;             -- apri la transazione

UPDATE …;
INSERT …;
DELETE …;
SELECT …;          -- puoi anche solo leggere

COMMIT;            -- conferma tutte le modifiche
-- oppure
ROLLBACK;          -- annulla tutte le modifiche, come se nulla fosse

BEGIN மற்றும் COMMIT இடையே உள்ள அனைத்தும் அணு: வேறு இணைப்பு இல்லை இடைநிலை நிலையைப் பார்க்கிறது. நிரல் செயலிழந்தால் அல்லது செயல்பட்டால் ROLLBACK, தரவுத்தளம் BEGINக்கு முன்பு இருந்ததைப் போலவே இருக்கும்.

உன்னதமான காட்சி: பரிமாற்றம்

நியமன உதாரணம் என்பது தயாரிப்புகளுக்கு இடையேயான பங்கு பரிமாற்றம் (அல்லது பணம் கணக்குகளுக்கு இடையே பரிமாற்றம்): இரண்டு UPDATEகள் வெற்றிபெற வேண்டும் ஒன்றாக, ஒன்று ஆம் மற்றொன்று இல்லை.

SQL
BEGIN;
UPDATE products SET stock = stock - 1 WHERE id = 1;
UPDATE products SET stock = stock + 1 WHERE id = 2;
COMMIT;

இரண்டாவது UPDATE தோல்வியடைந்தால் (எ.கா. CHECK கட்டுப்பாடு பிழை), a ROLLBACK தயாரிப்பு 1 இன் இருப்பை அதன் அசல் மதிப்பிற்கு மீட்டமைக்கிறது.

பின்னடைவு: DBA இன் பிழைத்திருத்தி

SQL
BEGIN;
UPDATE customers SET city = 'X' WHERE id = 1;
SELECT first_name, city FROM customers WHERE id = 1;   -- "vedo come è cambiato"
ROLLBACK;

உண்மையான தரவுகளில் UPDATE **முயற்சி செய்வதற்கு மிகவும் பயனுள்ள முறை: நீங்கள் அதை இயக்கவும், அதே பரிவர்த்தனையில் SELECT மூலம் முடிவைச் சரிபார்க்கவும், மற்றும் அது உங்களை நம்ப வைக்கவில்லை என்றால், நீங்கள் ROLLBACK — தரவுத்தளம் சரியாக உள்ளது அது முன்பு இருந்தது.

சேவ்பாயிண்ட்: பகுதி திரும்பப் பெறுதல்

பரிவர்த்தனையின் உள்ளே நீங்கள் இடைநிலை புள்ளிகளை உருவாக்கலாம்:

SQL
BEGIN;
UPDATE customers SET city = 'A' WHERE id = 1;
SAVEPOINT step1;
UPDATE customers SET city = 'B' WHERE id = 2;
-- mi sono accorto che il secondo UPDATE è sbagliato:
ROLLBACK TO SAVEPOINT step1;
COMMIT;     -- solo il primo UPDATE viene confermato

30 வினாடிகளில் ACID

பரிவர்த்தனைகள் ACID பண்புகளுக்கு உத்தரவாதம்:

  • A tomicity - அனைத்து அல்லது எதுவும் இல்லை;
  • C நிலைத்தன்மை - பரிவர்த்தனையின் தொடக்கத்திலும் முடிவிலும் கட்டுப்பாடுகள் திருப்திகரமாக இருக்கும்;
  • Isolation — ஒரே நேரத்தில் நடக்கும் பரிவர்த்தனைகள் இடைநிலை நிலைகளைக் காணாது (பல்வேறு "நிலைகளில்");
  • Durability — ஒரு வெற்றிகரமான COMMIT விபத்து ஏற்பட்டாலும் இழக்கப்படாது.

உங்கள் முறை

உடற்பயிற்சி#sql.m8.l4.e1
முயற்சிகள்: 0ஏற்றுகிறது…

ஒரு பரிவர்த்தனையில்: தயாரிப்பு 1 இன் பங்கை 1 ஆல் குறைக்கவும் மற்றும் தயாரிப்பின் பங்கை 1 ஆல் அதிகரிக்கவும் 2. BEGIN உடன் திறந்து COMMIT உடன் மூடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

குறிப்பு பங்கு - 1 மற்றும் பங்கு + 1 அந்தந்த SET உட்பிரிவுகளில்.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#sql.m8.l4.e2
முயற்சிகள்: 0ஏற்றுகிறது…

பரிவர்த்தனையைத் திறந்து, வாடிக்கையாளரின் நகரத்தை ஐடி=1 உடன் 'Sperimentale' ஆகப் புதுப்பிக்க முயற்சிக்கவும், பின்னர் ROLLBACK மூலம் செயல்பாட்டை ரத்து செய்யவும். இறுதியில் வாடிக்கையாளர் 1 நகரமானது அசல் நகரமாக இருக்க வேண்டும் ('மிலானோ').

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

ROLLBACK ஆனது BEGIN இலிருந்து செய்யப்படும் ஒவ்வொரு மாற்றத்தையும் ரத்து செய்கிறது.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்