<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Nurullah DEMİR - The day will come just wait.. &#187; sql server trigger nedir</title>
	<atom:link href="http://www.ndemir.com/tag/sql-server-trigger-nedir/feed" rel="self" type="application/rss+xml" />
	<link>http://www.ndemir.com</link>
	<description>The day will come just wait..</description>
	<lastBuildDate>Sat, 04 Feb 2012 02:10:47 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>SQL Server : Triggers</title>
		<link>http://www.ndemir.com/_net/sql-server/sql-server-triggers</link>
		<comments>http://www.ndemir.com/_net/sql-server/sql-server-triggers#comments</comments>
		<pubDate>Sun, 11 Jul 2010 14:44:28 +0000</pubDate>
		<dc:creator>Nurullah</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[sql server]]></category>
		<category><![CDATA[sql server da triggerler nasıl hazırlanır]]></category>
		<category><![CDATA[sql server procedure yazma]]></category>
		<category><![CDATA[sql server tetikleyici]]></category>
		<category><![CDATA[sql server trigger]]></category>
		<category><![CDATA[sql server trigger nedir]]></category>
		<category><![CDATA[sql server trigger oluşturma]]></category>

		<guid isPermaLink="false">http://www.ndemir.com/?p=2413</guid>
		<description><![CDATA[SQL Server&#8217;da bilmemiz gereken başka birşey ise trigger&#8217;lardır. Bunları C# da gördüğümüz event lara benzetebiliriz. Şu şey meydana gelince bunu yap şeklinde. Örneğin bir kategori silindiğinde ona bağlı olan tüm ürünlerin kategorisini değiştirmek yada o kategoriyi silmek istiyorsunuz. Bunu SQL Server&#8217;da Trigger yapısı ile çok kolay bir şekilde gerçekleştirebiliriz. Bahsettiğim gibi, daha önce gördüğümüz olaylardan [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://ndemir.com/img/sql.gif" alt="sql SQL Server : Triggers sql server " width="296" height="75" title="sql SQL Server : Triggers sql server " />SQL Server&#8217;da bilmemiz gereken başka birşey ise trigger&#8217;lardır. Bunları C# da gördüğümüz event lara benzetebiliriz. Şu şey meydana gelince bunu yap şeklinde.<br />
Örneğin bir kategori silindiğinde ona bağlı olan tüm ürünlerin kategorisini değiştirmek yada o kategoriyi silmek istiyorsunuz. Bunu SQL Server&#8217;da Trigger yapısı ile çok kolay bir şekilde gerçekleştirebiliriz. Bahsettiğim gibi, daha önce gördüğümüz olaylardan hiçbir farkı yok. Biz &#8220;Butona tıklanınca şunu yap&#8221;, &#8220;Mouse formun üzerine geldiğinde şunu yap&#8221; diye belirttiğimiz şeylerin trigger yapısı ile (görev olarak) farkı yoktur.</p>
<p>SQL Server da Trigger yapısı nasıl çalışır onu görelim şimdi ;</p>
<p>Trigger lar her tablonun altında Trigger klasörünün içerisinde bulunur. Biz triggerlerimizi bu klasörlerin altında yazacağız. Her tablonun kendine has trigger i olabilir, örneğin Kategoriler tablosu için yazılmış bir triggerın Urunler tablosu için hiçbir geçerliliği yoktur.</p>
<h5><strong>Triggerlar hakkında</strong></h5>
<p>Trigger yazarken önce şunu belirlemeliyiz;  trigger ne zaman çalışacak ? Yeni veri eklenirken mi, düzenlenirken mi silinirken mi, veri çağrılırken mi ?<br />
<span id="more-2413"></span><br />
2 çeşit trigger vardır, <strong>instead </strong>ve <strong>after </strong>trigger.</p>
<h6>Instead Trigger</h6>
<p>Belirtilen işlem gerçekleşmeden önce trigger tetiklenir.</p>
<h6>After Trigger</h6>
<p>Belirtilen işlem gerçekleştikten sonra trigger tetiklenir.</p>
<h5>Trigger nasıl yazılır ?</h5>
<p>Aşağıda verdiğim örnekte şu yapılıyor ; Bir kategori silinmek istenildiğinde, eğer o kategoriye bağlı Urunler tablosunda ürün varsa kategoriyi silme Aktif kolonunu(bizim kategorilerin aktif olup olmadığını kontrol için oluşturduğumuz bir kolon..) 0 yap (pasif yap). Eğer Urunler tablosunda bu kategoriye bağlı hiçbir ürün yoksa kategori silinebilir.</p>
<pre class="brush: sql; title: ; notranslate">
create trigger TriggerAdi on Kategoriler instead of delete
as
begin

Declare @katID int,@adet int

select @katID=KatID from deleted
select @adet=COUNT(*) from Urunler where UrunKatID=@katID

if(@adet=0)
delete from Kategoriler where KatID=@katID
else
update Kategoriler set Aktif=0 where KatID=@katID

end
</pre>
<p>Ne yaptığımızı açığa kavuşturalım şimdi.</p>
<p><strong>1.Satır</strong><br />
Burada trigger oluşturup adını yazdık ve bağlı olacağı tabloyu belirttik, daha sonra trigger in ne zaman tetikleneceğini belirttik (instead of delete, yani veri silinmeden önce, eğer after of delete yapsaydık, veri silindikten sonra tetiklenecekti)<br />
<strong>5.Satır</strong><br />
İki tane değişken tanımladık.  Bu değişkenlerde silinmek istenen verinin değerlerini saklayacağız.<br />
<strong>7.Satır</strong><br />
Burada katID değişkenine silinen satırdaki KatID kolonunu atıyoruz. Burada silinmek istenen kolona nasıl ulaşacağımıza gördük, from deleted ile<br />
<strong>8.Satır</strong><br />
adet değişkenine silinmek istenen kategoriye bağlı kaç ürünün olduğunu atadık<br />
<strong>10-13.Satır</strong><br />
Eğer 0 adet varsa kategorinin silinmesini istedik.<br />
Else ile de kategoriyi pasif hale getirdik.</p>
<p><strong>NOT : Eğer biz burada silme/değiştirme işlemi yapmasaydık, veriler silinmeyecekti aynen olduğu gibi kalacaktı.<br />
</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.ndemir.com/_net/sql-server/sql-server-triggers/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

