﻿
{"id":183,"date":"2012-03-14T22:50:01","date_gmt":"2012-03-14T22:50:01","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=183"},"modified":"2012-04-27T16:46:35","modified_gmt":"2012-04-27T16:46:35","slug":"transact-sql-transaction","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/transact-sql-transaction\/","title":{"rendered":"Transact Sql-Transaction"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Bu yaz\u0131m\u0131zda T-SQL de transactionlardan bahsedece\u011fim.<br \/>\nBirden \u00e7ok i\u015flemin bir arada yap\u0131ld\u0131\u011f\u0131 durumlarda e\u011fer par\u00e7ay\u0131 olu\u015fturan i\u015flemlerden herhangi birinde sorun olursa t\u00fcm i\u015flemi iptal ettirmeye yarar.<br \/>\n<!--more--> \u00d6rne\u011fin kredi kart\u0131 ile al\u0131\u015fveri\u015f olay\u0131nda transaction olay\u0131 vard\u0131r.Siz marketten \u00fcr\u00fcn al\u0131rken sizin hesab\u0131n\u0131zdan para d\u00fc\u015f\u00fclecek,marketin hesab\u0131na para aktar\u0131lacak.Bu i\u015flemde hata olmamas\u0131 gerekir ve bundan dolay\u0131 bu i\u015flem bir transaction blo\u011funda ger\u00e7ekle\u015ftirilmelidir.Yani kodlar\u0131m\u0131z s\u0131ras\u0131yla i\u015fleyecek(Sizin kredi kart\u0131ndan paran\u0131n d\u00fc\u015f\u00fclmesi,di\u011ferinin hesab\u0131na aktar\u0131lmas\u0131).Bu esnada sorun olursa b\u00fct\u00fcn i\u015flemler iptal edilecek.Olmazsa b\u00fct\u00fcn i\u015flemler ger\u00e7ekle\u015fecektir.<br \/>\nBegin tran veya begin transaction : Transaction i\u015flemini ba\u015flat\u0131r.<br \/>\nCommit tran : Transaction i\u015flemini ba\u015far\u0131yla sona erdirir.(\u0130\u015flemi ger\u00e7ekle\u015ftirir.)<br \/>\nRollback tran : Transaction i\u015flemini iptal eder.(\u0130\u015flemi geri al\u0131r.)<br \/>\nNormalda default olarak her\u015fey begin tran ile ba\u015flay\u0131p, commit tran ile biter.Biz yazmasak bile.<br \/>\nCommit tran yerine sadece commit,rollback tran yerine de sadece rollback yaz\u0131labilir.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nbegin tran\r\ndeclare @i int\r\ndelete from PersonellerYedek where PersonelID&gt;36\r\nset @i=@@ROWCOUNT\r\nif @i=1\r\nbegin\r\nprint 'Kay\u0131t silindi.'\r\ncommit -- ya da commit tran\r\nend\r\nelse\r\nbegin\r\nprint '\u0130\u015flemler geri al\u0131nd\u0131.'\r\nrollback -- ya da rollback tran\r\nend\r\n<\/pre>\n<hr \/>\n<p>Yukar\u0131da g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi delete i\u015flemi sonucunda ka\u00e7 kay\u0131t etkilenmi\u015f onu @i de\u011fi\u015fkenine al\u0131yoruz.Ve transaction sayesinde \u015fu kontrol\u00fc yapabiliyorum.E\u011fer i 1 ise sil,de\u011filse i\u015flemleri geri al.<br \/>\nNOT:Transaction a isim verebiliriz.Zorunluluk yoktur.<br \/>\nSoru\u2019\u2019<br \/>\n2 adet banka tablosu yaparak, birinci bankada bulunan hesaba, 2. bankadan havale yapt\u0131ral\u0131m.<br \/>\n\u00d6ncelikle banka tablolar\u0131n\u0131 olu\u015ftural\u0131m.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ncreate table Ziraat\r\n(\r\nZHesapNo int,\r\nZPara money\r\n)\r\ncreate table Garanti\r\n(\r\nGHesapNo int,\r\nGPara money\r\n)\r\n<\/pre>\n<hr \/>\n<p>Ziraat bankas\u0131na hesap no su 10 ve 20 olan iki kay\u0131t ekledim ve s\u0131ras\u0131yla 1000 ve 2000 para kay\u0131t ettim.<br \/>\nGaranti bankas\u0131na hesap no su 30 ve 40 olan iki kay\u0131t ekledim ve soras\u0131yla 3000 ve 4000 para kay\u0131t ettim.<br \/>\nBankalar aras\u0131 havale i\u015flemini ger\u00e7ekle\u015ftirecek stored proc. yazal\u0131m.<\/p>\n<hr \/>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ncreate proc HavaleYap\r\n(\r\n@BirinciHesapNo int,\r\n@\u00ddkinciHesapNo int,\r\n@GonderilecekPara money\r\n)\r\nas\r\nbegin tran Kontrol\r\ndeclare @HesaptakiPara money\r\nselect @HesaptakiPara = ZPara from Ziraat where ZHesapNo=@BirinciHesapNo\r\nif @HesaptakiPara&lt;@GonderilecekPara\r\nbegin\r\nrollback tran Kontrol\r\nprint 'Hesapta Yeterli Para Yok'\r\nend\r\nelse\r\nbegin\r\nupdate Ziraat set ZPara=ZPara-@GonderilecekPara where ZHesapNo=@BirinciHesapNo\r\nupdate Garanti set GPara=GPara+@GonderilecekPara where GHesapNo=@\u00ddkinciHesapNo\r\nend\r\n---\r\nif not exists(select * from Ziraat where ZHesapNo=@BirinciHesapNo)\r\nbegin\r\nrollback tran Kontrol\r\nprint 'B\u00f6yle bir hesap numaras\u0131 bulunamad\u0131.'\r\nend\r\nelse if not exists(select * from Garanti where GHesapNo=@\u00ddkinciHesapNo)\r\nbegin\r\nrollback tran Kontrol\r\nprint 'B\u00f6yle bir hesap numaras\u0131 bulunamad\u0131.'\r\nend\r\nelse\r\nbegin\r\ncommit tran Kontrol\r\nprint 'Transfer i\u015flemi ba\u015far\u0131yla ger\u00e7ekle\u015fti.'\r\nEnd\r\n<\/pre>\n<hr \/>\n<p>Yukar\u0131daki yap\u0131y\u0131 inceleyiniz.<br \/>\n\u015eu yap\u0131lar\u0131da incelemekte fayda var.Zamanla bunlar hakk\u0131nda yaz\u0131lar haz\u0131rlayaca\u011f\u0131m.<br \/>\nISOLATION LEVELS<br \/>\nDEAD LOCKS<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Bu yaz\u0131m\u0131zda T-SQL de transactionlardan bahsedece\u011fim. Birden \u00e7ok i\u015flemin bir arada yap\u0131ld\u0131\u011f\u0131 durumlarda e\u011fer par\u00e7ay\u0131 olu\u015fturan i\u015flemlerden herhangi birinde sorun olursa t\u00fcm i\u015flemi iptal ettirmeye yarar.<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22],"tags":[126],"class_list":["post-183","post","type-post","status-publish","format-standard","hentry","category-veritabani","tag-transaction"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=183"}],"version-history":[{"count":0,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/183\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}