{"id":3471,"date":"2024-02-10T13:05:56","date_gmt":"2024-02-10T10:05:56","guid":{"rendered":"https:\/\/blog.inetmar.com\/?p=3471"},"modified":"2024-07-27T16:16:41","modified_gmt":"2024-07-27T13:16:41","slug":"sql-trigger-nedir","status":"publish","type":"post","link":"https:\/\/www.inetmar.com\/blog\/sql-trigger-nedir\/","title":{"rendered":"SQL Trigger Nedir?"},"content":{"rendered":"\r\n\r\n\r\n<p>SQL Trigger, veritaban\u0131 y\u00f6netim sistemi olan SQL&#8217;de kullan\u0131lan bir yap\u0131d\u0131r. Trigger, T\u00fcrk\u00e7e anlam\u0131 olarak &#8220;tetikleyici&#8221; demektir. SQL Trigger, belirli bir olay\u0131n ger\u00e7ekle\u015fmesi durumunda otomatik olarak \u00e7al\u0131\u015fan bir kod par\u00e7ac\u0131\u011f\u0131d\u0131r. Bu kod par\u00e7ac\u0131\u011f\u0131, veritaban\u0131nda yap\u0131lan bir de\u011fi\u015fiklik sonucunda belirli bir i\u015flemi ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131l\u0131r. SQL Trigger&#8217;lar, veritaban\u0131 g\u00fcvenli\u011fini sa\u011flamak ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korumak i\u00e7in yayg\u0131n olarak kullan\u0131l\u0131r.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">SQL Trigger Nas\u0131l \u00c7al\u0131\u015f\u0131r?<\/h2>\r\n\r\n\r\n\r\n<p>SQL Trigger, bir tabloda veya veritaban\u0131nda belirli bir olay ger\u00e7ekle\u015fti\u011finde tetiklenir. Bu olaylar, INSERT, UPDATE ve DELETE i\u015flemleri gibi veritaban\u0131 \u00fczerinde ger\u00e7ekle\u015fen de\u011fi\u015fiklikler olabilir. Bir olay ger\u00e7ekle\u015fti\u011finde, belirli bir tabloda veya veritaban\u0131nda tan\u0131mlanan Trigger kodu otomatik olarak \u00e7al\u0131\u015f\u0131r ve belirli bir i\u015flemi ger\u00e7ekle\u015ftirir.<\/p>\r\n\r\n\r\n\r\n<p>SQL Trigger&#8217;lar, BEFORE ve AFTER olarak iki farkl\u0131 zaman diliminde \u00e7al\u0131\u015fabilir. BEFORE Trigger, i\u015flem ger\u00e7ekle\u015fmeden \u00f6nce tetiklenir ve belirli bir i\u015flem ger\u00e7ekle\u015ftirilmeden \u00f6nce veritaban\u0131 \u00fczerinde yap\u0131lan de\u011fi\u015fiklikleri kontrol etmek i\u00e7in kullan\u0131l\u0131r. AFTER Trigger ise i\u015flem ger\u00e7ekle\u015ftikten sonra tetiklenir ve i\u015flem sonras\u0131 belirli bir i\u015flemi ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">SQL Trigger Kullan\u0131m\u0131<\/h3>\r\n\r\n\r\n\r\n<p>SQL Trigger kullan\u0131m\u0131, veritaban\u0131 y\u00f6netim sistemi ve kullan\u0131lan SQL diline ba\u011fl\u0131 olarak de\u011fi\u015fiklik g\u00f6sterebilir. Genel olarak, bir Trigger olu\u015fturmak i\u00e7in a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 izlemek gerekmektedir:<\/p>\r\n\r\n\r\n\r\n<ol class=\"wp-block-list\">\r\n<li><strong>Trigger Olu\u015fturma:<\/strong>\u00a0\u0130lk ad\u0131mda, bir Trigger olu\u015fturmak i\u00e7in CREATE TRIGGER ifadesi kullan\u0131l\u0131r. Bu ifade, yeni bir Trigger&#8217;\u0131n tan\u0131mlanaca\u011f\u0131n\u0131 belirtir.<\/li>\r\n\r\n\r\n\r\n<li><strong>Trigger \u0130smi:<\/strong>\u00a0Olu\u015fturulan Trigger&#8217;a bir isim verilir. Bu isim, Trigger&#8217;\u0131 di\u011fer b\u00f6l\u00fcmlerden ay\u0131rt etmek i\u00e7in kullan\u0131l\u0131r.<\/li>\r\n\r\n\r\n\r\n<li><strong>Trigger Olay\u0131:<\/strong>\u00a0Trigger&#8217;\u0131n hangi olayda \u00e7al\u0131\u015faca\u011f\u0131 belirtilir. \u00d6rne\u011fin, bir tabloya yeni bir kay\u0131t eklendi\u011finde tetiklenmesi i\u00e7in INSERT ifadesi kullan\u0131l\u0131r.<\/li>\r\n\r\n\r\n\r\n<li><strong>Trigger Zaman\u0131:<\/strong>\u00a0Trigger&#8217;\u0131n ne zaman \u00e7al\u0131\u015faca\u011f\u0131 belirtilir. BEFORE veya AFTER se\u00e7eneklerinden biri kullan\u0131larak belirtilir.<\/li>\r\n\r\n\r\n\r\n<li><strong>Trigger Kodu:<\/strong>\u00a0Tetiklenme durumunda \u00e7al\u0131\u015facak olan SQL kodu burada tan\u0131mlan\u0131r. Bu kod, belirli bir i\u015flemi ger\u00e7ekle\u015ftirmek i\u00e7in kullan\u0131l\u0131r.<\/li>\r\n\r\n\r\n\r\n<li><strong>Trigger Etkinle\u015ftirme:<\/strong>\u00a0Son ad\u0131mda, olu\u015fturulan Trigger&#8217;\u0131n etkinle\u015ftirilmesi i\u00e7in kullan\u0131l\u0131r. Bu sayede Trigger, belirtilen olay ger\u00e7ekle\u015fti\u011finde \u00e7al\u0131\u015f\u0131r.<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">SQL Trigger \u00d6rne\u011fi<\/h2>\r\n\r\n\r\n\r\n<p>Tablolar aras\u0131nda bir ili\u015fkiyi takip etmek i\u00e7in bir tetikleyici kullanarak veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flayabilirsiniz. \u00d6rne\u011fin, bir al\u0131\u015fveri\u015f uygulamas\u0131nda kullan\u0131c\u0131lar bir \u00fcr\u00fcn\u00fc sepete ekledi\u011finde, stoktan d\u00fc\u015fmesi gerekebilir. \u0130\u015fte bir SQL Trigger \u00f6rne\u011fi:<\/p>\r\n<div class=\"dark bg-gray-950 rounded-md\">\r\n<div class=\"flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md\">\u00a0<\/div>\r\n<div class=\"p-4 overflow-y-auto\"><code class=\"!whitespace-pre hljs language-sql\"><span class=\"hljs-keyword\">CREATE<\/span> <span class=\"hljs-keyword\">TRIGGER<\/span> sepete_ekle AFTER <span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">ON<\/span> Sepet\r\n<br \/><span class=\"hljs-keyword\">FOR<\/span> <span class=\"hljs-keyword\">EACH<\/span> <span class=\"hljs-type\">ROW<\/span>\r\n<br \/><span class=\"hljs-keyword\">BEGIN<\/span>\r\n<br \/>    <span class=\"hljs-comment\">\u00a0 \u00a0 \u00a0-- Sepete yeni bir \u00fcr\u00fcn eklendi\u011finde stoktan d\u00fc\u015f\u00fcr<\/span>\r\n<br \/>    <span class=\"hljs-keyword\">\u00a0 \u00a0 \u00a0UPDATE<\/span> Urunler\r\n<br \/>    <span class=\"hljs-keyword\">\u00a0 \u00a0 \u00a0SET<\/span> stok_miktari <span class=\"hljs-operator\">=<\/span> stok_miktari <span class=\"hljs-operator\">-<\/span> <span class=\"hljs-number\">1<\/span>\r\n<br \/>    <span class=\"hljs-keyword\">\u00a0 \u00a0 \u00a0WHERE<\/span> urun_id <span class=\"hljs-operator\">=<\/span> NEW.urun_id;\r\n<span class=\"hljs-keyword\">END<\/span>;\r\n<\/code><\/div>\r\n<\/div>\r\n<p>Bu \u00f6rnek, &#8220;Sepet&#8221; adl\u0131 bir tabloya yeni bir sat\u0131r eklendi\u011finde tetiklenecek bir AFTER INSERT tetikleyici olu\u015fturur. Her bir sat\u0131r i\u00e7in, belirtilen \u00fcr\u00fcn\u00fcn stok miktar\u0131n\u0131 azalt\u0131r.<br \/><br \/>Not: Yukar\u0131daki \u00f6rnek, kullan\u0131lacak tablo isimleri ve alan adlar\u0131na g\u00f6re uyarlanmal\u0131d\u0131r. Ayr\u0131ca, ger\u00e7ek bir uygulama i\u00e7in tetikleyiciyi geli\u015ftirirken, daha fazla hata kontrol\u00fc ve durumlar\u0131 ele almak i\u00e7in ek mant\u0131k eklemeniz gerekebilir.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">SQL Trigger Yararlar\u0131<\/h2>\r\n\r\n\r\n\r\n<p>SQL Trigger&#8217;lar\u0131n bir\u00e7ok yarar\u0131 vard\u0131r. Bunlar:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Veritaban\u0131 g\u00fcvenli\u011fini sa\u011flar: SQL Trigger&#8217;lar, veritaban\u0131 g\u00fcvenli\u011fini art\u0131rmak i\u00e7in kullan\u0131labilir. \u00d6rne\u011fin, bir tabloya yap\u0131lan de\u011fi\u015fikliklerin loglanmas\u0131 veya belirli ko\u015fullar\u0131 kontrol ederek istenmeyen i\u015flemleri engellemek m\u00fcmk\u00fcnd\u00fcr.<\/li>\r\n\r\n\r\n\r\n<li>Veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc korur: Trigger&#8217;lar, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fc sa\u011flamak i\u00e7in kullan\u0131labilir. \u00d6rne\u011fin, bir tablodan bir kay\u0131t silindi\u011finde, ilgili tablolardaki ba\u011flant\u0131l\u0131 kay\u0131tlar\u0131n da silinmesi sa\u011flanabilir.<\/li>\r\n\r\n\r\n\r\n<li>Otomatik i\u015flemler sa\u011flar: Trigger&#8217;lar, belirli bir olay ger\u00e7ekle\u015fti\u011finde otomatik olarak \u00e7al\u0131\u015fan i\u015flemler i\u00e7in kullan\u0131labilir. \u00d6rne\u011fin, bir tabloya yeni bir kay\u0131t eklendi\u011finde, di\u011fer tablolara otomatik olarak kay\u0131t eklemek m\u00fcmk\u00fcnd\u00fcr.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">\u00a0S\u0131k\u00e7a Sorulan Sorular<\/h2>\r\n\r\n\r\n\r\n<p>SQL Trigger konusuyla ilgili s\u0131k\u00e7a sorulan sorular a\u015fa\u011f\u0131da yer almaktad\u0131r:<\/p>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">1. Trigger&#8217;lar hangi durumlarda kullan\u0131l\u0131r?<\/h4>\r\n\r\n\r\n\r\n<p>Trigger&#8217;lar, veritaban\u0131nda yap\u0131lan de\u011fi\u015fikliklerin kontrol edilmesi, veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fcn sa\u011flanmas\u0131 ve otomatik i\u015flemlerin ger\u00e7ekle\u015ftirilmesi gibi durumlarda kullan\u0131l\u0131r. \u00d6rne\u011fin, bir tabloya yeni bir kay\u0131t eklendi\u011finde ba\u015fka bir tabloya da otomatik olarak kay\u0131t eklemek i\u00e7in Trigger kullan\u0131labilir.<\/p>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">2. Trigger olu\u015ftururken nelere dikkat etmek gerekmektedir?<\/h4>\r\n\r\n\r\n\r\n<p>Trigger olu\u015ftururken dikkat edilmesi gereken baz\u0131 noktalar \u015funlard\u0131r:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Trigger&#8217;lar, veritaban\u0131 performans\u0131n\u0131 etkileyebilece\u011finden dikkatli bir \u015fekilde kullan\u0131lmal\u0131d\u0131r.<\/li>\r\n\r\n\r\n\r\n<li>Trigger&#8217;lar, d\u00f6ng\u00fcler veya karma\u015f\u0131k i\u015flemler i\u00e7ermemelidir.<\/li>\r\n\r\n\r\n\r\n<li>Trigger&#8217;lar, gereksiz yere tetiklenmemeli ve gereksiz yere i\u015flem yapmamal\u0131d\u0131r.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<p><em><strong><br \/>Trigger&#8217;lar do\u011fru bir \u015fekilde kullan\u0131ld\u0131\u011f\u0131nda, veritaban\u0131 y\u00f6netiminde ve veri b\u00fct\u00fcnl\u00fc\u011f\u00fcn\u00fcn sa\u011flanmas\u0131nda \u00f6nemli bir rol oynar. Ancak, yanl\u0131\u015f kullan\u0131m\u0131 veya gereksiz kullan\u0131m\u0131 durumunda veritaban\u0131 performans\u0131 ve g\u00fcvenli\u011fi olumsuz etkilenebilir. Bu nedenle, Trigger&#8217;lar dikkatli bir \u015fekilde planlanmal\u0131 ve uygulanmal\u0131d\u0131r. Daha fazla i\u00e7erik i\u00e7in blog sayfam\u0131z\u0131 ziyaret edebilir, <a href=\"https:\/\/www.inetmar.com\/sunucu\/vds-cloud-server\/\" target=\"_blank\" rel=\"noopener\">VDS Server<\/a> ihtiya\u00e7lar\u0131n\u0131z i\u00e7in websitemizi inceleyebilirsiniz.<\/strong><\/em><\/p>\r\n\r\n<p style=\"text-align: center;\">Web sitenizi uygun <a class=\"waffle-rich-text-link\" href=\"https:\/\/www.inetmar.com\/hosting\/\">hosting<\/a> se\u00e7eneklerimizle g\u00fcvende tutun.<\/p>","protected":false},"excerpt":{"rendered":"<p>SQL Trigger, veritaban\u0131 y\u00f6netim sistemi olan SQL&#8217;de kullan\u0131lan bir yap\u0131d\u0131r. Trigger, T\u00fcrk\u00e7e anlam\u0131 olarak &#8220;tetikleyici&#8221; demektir. SQL Trigger, belirli bir olay\u0131n ger\u00e7ekle\u015fmesi durumunda otomatik olarak \u00e7al\u0131\u015fan bir kod par\u00e7ac\u0131\u011f\u0131d\u0131r. Bu kod par\u00e7ac\u0131\u011f\u0131, veritaban\u0131nda yap\u0131lan bir&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":5441,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[54,26],"tags":[],"class_list":["post-3471","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mysqlserver","category-sql-server"],"_links":{"self":[{"href":"https:\/\/www.inetmar.com\/blog\/wp-json\/wp\/v2\/posts\/3471","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inetmar.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inetmar.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inetmar.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inetmar.com\/blog\/wp-json\/wp\/v2\/comments?post=3471"}],"version-history":[{"count":11,"href":"https:\/\/www.inetmar.com\/blog\/wp-json\/wp\/v2\/posts\/3471\/revisions"}],"predecessor-version":[{"id":9503,"href":"https:\/\/www.inetmar.com\/blog\/wp-json\/wp\/v2\/posts\/3471\/revisions\/9503"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inetmar.com\/blog\/wp-json\/wp\/v2\/media\/5441"}],"wp:attachment":[{"href":"https:\/\/www.inetmar.com\/blog\/wp-json\/wp\/v2\/media?parent=3471"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.inetmar.com\/blog\/wp-json\/wp\/v2\/categories?post=3471"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inetmar.com\/blog\/wp-json\/wp\/v2\/tags?post=3471"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}