Tehingud SQL-is - Sammud tehingute tegemiseks näidetega

Lang L: none (table-of-contents):

Anonim

SQL-i tehingute tutvustus

Tehing SQL-is, mida üldiselt nimetatakse maksete tegemiseks (saatmine, vastuvõtmine, ostmine jne), kuid kui tegemist on tehniliste väljadega, on see viis andmebaasis oleva loogilise teabeühiku värskendamiseks.

Tehing on ühe või mitme muudatuse rakendamine andmebaasis. Saame grupeerida mitu SQL päringut ja käivitada tehingu korraga. Kõik SQL päringud täidetakse ühe korraga või keeratakse kõik tagasi. Sellel oleks ainult kaks tulemust - kas edu või ebaedu.

Kui tehing on kord sõlmitud, ei saa see olla tagasivõtmine. See võib olla tühistamine ainult siis, kui tehingut ei tehta. MYSQL seob muudatused andmebaasis automaatselt, kui kõik päringud on edukalt täidetud. Muudatuste otseseks sisestamiseks andmebaasi tuleb esmalt keelata automaatne pühendumine käsu kaudu -

Süntaks: SET automaatne edastamine = 0;

Tehingu omadused

Järgnevalt on toodud tehingute olulised omadused, iga tehing peab neid omadusi järgima

1. Aatomilisus

Tehing peab olema aatomiline, see tähendab, et teatud loogilise üksuse jaoks peaks olema manipuleeritud andmetega. See omadus tagab, et andmete muudatused toimuvad täielikult, vastasel juhul tühistatakse tehing.

2. Järjepidevus

Kui tehing on lõpule viidud, on kõik saadaolevad kirjed kogu tehingu jooksul ühesugused. See omadus tagab, et andmebaasi atribuut lülitatakse olekusse pärast edukat sidumist või mitte.

3. Isolatsioon

Isoleerimine viitab andmemuutustele teatud loogilises üksuses, mis ei tohiks teise üksuse puhul mõjutada. See võimaldab tehingut iseseisvalt teostada.

4. Vastupidavus

Tehingute ajal tehtud muudatused peaksid süsteemis püsima. Süsteemi tõrke korral tagab see omadus ka andmete muutumise või mitte.

Ülaltoodud tehingu vara nimetatakse ka ACID-i omandiks.

Tehingu sammud

1. Alusta

Tehing võib toimuda mitme SQL-i täitmise korral, kuid kogu SQL peaks käima korraga. Kui mõni tehing ebaõnnestub, tagastatakse kogu tehing. Tehingu alustamise avaldus on “START TRANSACTION”. Alustatakse lühendiga START TRANSACTION.

Süntaks: Alustage tehingut;

2. Pühenduma

Kohustused kajastavad andmebaasis tehtud muudatusi püsivalt. Tehingu alustamise avaldus on „KOMITEE”.

Süntaks: COMMIT;

3. Tagasivõtmine

Tagasivõtmist kasutatakse muudatuste tühistamiseks, st kirjet ei muudeta. See oleks eelmises olekus. Tehingu alustamise avaldus on „ROLLBACK”.

Süntaks: ROLLBACK;

4. Salvestamispunkt

SAVEPOINT on ka tehinguväljavõte. Seda avaldust kasutati süsteemis salvestuspunkti loomiseks, et toiminguga ROLLBACK saaksite salvestamispunkti oleku.

5. Vabastage Savepoint

RELEASE SAVEPOINT on avaldus, mille eesmärk on vabastada süsteemi salvestatud punkti salvestamispunkt ja mälu.

Süntaks: RELEASE SAVEPOINT SP

Märkused - SP on salvestuspunkti nimi, kui see salvestuspunkt loodi enne tehingu algust.

6. Määrake tehing

Käsku SET TRANSACTION kasutatakse tehingu atribuudi täpsustamiseks, näiteks kui antud tehing on kirjutuskaitstud või kirjutusseanss.

Süntaks : SEADETE TEHING (READ-WRITE | READ AINULT);

Tehingut kasutatakse andmebaasis keerukate muudatuste tegemiseks. Seda kasutatakse peamiselt pangandusega seotud teabe muutmisel relatsiooniandmebaasiks.

Tehingut toetab MYSQL mootor InnoDB. Vaikimisi jääb automaatne pühendumine lubatuks, sellepärast toimub mõni SQL automaatselt pärast täitmist.

Tehingud SQL-i abil

Näide nr 1

Pangatehing: kontolt debiteeritakse isikult Säästukontolt 50000 summa ja see summa edastatakse A laenukontole.

Alusta tehingut: see alustav tehing teisendab kõik SQL päringud üheks tehinguühikuks.

UPDATE `account` SET `balance` = `balance` - 50000 WHERE user_id = 7387438;

See SQL-päring lahutab summa olemasolevalt kontojäägilt.

UPDATE `loan_account` SET `paid_amount` = `paid_amount` + 50000 WHERE user_id = 7387438;

See SQL-päring lisab summa kasutajalaenukontole.

Insert into `transaction_details`(`user_id`, 'amount') values (7387438, '50000');

See SQL-päring lisab tehingute üksikasjade tabelisse uue kirje, see tabel sisaldab kõigi kasutajate tehingute üksikasju. Kui kogu päring õnnestus edukalt, tuleb täita käsk COMMIT, kuna muudatused tuleb püsivalt andmebaasi salvestada.

Kohustus: Selle kohustuse avaldus salvestab muudatused, millele tehing tugineb, andmebaasi. Kui mõni tehing ebaõnnestub täitmise ajal, tuleks kogu tehingu taastamiseks täita käsk ROLLBACK

Tagasivõtmine: tagasivõtmine toimub siis, kui mõni päring täitmise ajal ebaõnnestub.

Näide 2

Varude tehing: antud üksuste tabelis on saadaval 6 eset.

Järgmise START TRANSACTION väljavõtte täitmine tehingu alustamiseks.

Käivitage nüüd käsk SET AUTOCOMMIT = 0 ; automaatse pühendumise keelamiseks

Käivitame järgmise väljavõtte kirje eemaldamiseks üksuste tabelist

Nüüd saadaval olev tabel tabelis on 4, st ajutiselt tabeli üksustest eemaldatud kirjed

Nüüd täidab käsku ROLLBACK muudatuste taastamiseks, kustutatud kirje oleks saadaval tabeli üksustes nagu enne tehingu alustamist

Kui rakendate sama kustutamisoperatsiooni, salvestatakse COMMIT operatsioon pärast muudatuste tegemist jäädavalt andmebaasi

Nüüd näeme, et pärast käsku ROLLBACK oli kirje siiski uues olekus. See tähendab, et pärast COMMIT-operatsiooni tehtud muudatusi ei saa tagasi pöörduda, kuna see teeb püsivalt muudatusi andmebaasis;

Tehingu kasutamise eelised SQL-is

a) Tehingu kasutamine parandab jõudlust , kui 1000 kirje lisamine tehingute abil oleks sellisel juhul aeg, mis oleks tavalisest sisestamisest väiksem. Nagu tavalise tehingu korral, toimuks COMMIT iga kord pärast iga päringu täitmist ja see pikendaks täitmise aega iga kord, kui tehingu ajal pole vaja COMMITi avaldust pärast iga SQL päringut täita. COMMIT lõpus kajastaks kõiki muudatusi andmebaasis püsivalt korraga. Samuti kui kasutada tehingut, oleks muudatuste tagastamine tavapärasest tehingust palju lihtsam. ROLLBACK taastab kõik muudatused korraga ja hoiab süsteemi eelmises olekus.

b) Tehing tagab andmete terviklikkuse relatsiooniandmebaasis. Suurem osa andmebaasist kasutab andmete säilitamiseks mitut tabelit ning värskenduste tegemise ajal võib mitmetes tabelites muudatusi olla, kui mõni SQL-päring ebaõnnestub, hoiab tehing andmeid muutmata.

Järeldus

Tehingute kasutamine on relatsiooniandmebaasis oleva loogilise üksuse teabe värskendamise parim tava. Tehingute juurutamiseks peaks andmebaasi mootor tehingut toetama nagu InnoDB mootor. Tehingut kui SQL-i üksuste ühikut saab korraga taastada, kasutades ühte ROLLBACK-avaldust. Tehing tagab andmete terviklikkuse ja parandab andmebaasi jõudlust.

Soovitatavad artiklid

See on SQL-i tehingute juhend. Siin käsitleme SQL-i sissejuhatust, atribuute, samme, tehingute näiteid ning SQL-is tehingute kasutamise eeliseid.

  1. Mis on SQL
  2. SQL-i haldustööriistad
  3. SQL vaated
  4. Liitumiste tüübid SQL Serveris
  5. MySQL-i 6 parimat liitumistüüpi koos näidetega