En iyi yanıtlayıcılar
trigger ile tablo oluşturabilir miyim yoksa sadece tabloya insert işlemi mi yapabilirm?

Soru
-
Yanıtlar
-
trigger nedir, nasıl yazılırı mı öğrenmek istiyorsunuz yoksa daha spesifik birşey mi öğrenmek istiyorsunuz?
bu örnekte Employees tablosuna bir trigger yazılıyor. Employees tablosunda INSERT işlemi gerçekleştikten sonra bu trigger çalışacak ve içerisine yazılan işlemleri yapacak. trigger içerisinde tablo da oluşturabilirsiniz, öncesinde o isimde bir tablo olup olmadığını kontrol ederek tabii ki.CREATE TRIGGER trgTest ON Employees AFTER INSERT AS -- trigger' ın otomatik olarak yapacağı işler
- Yanıt Olarak İşaretleyen Serkan Bark 14 Temmuz 2011 Perşembe 11:34
-
Merhaba,
Trigger kullanarak A tablosuna bir kayıt girildiğinde başka bir tabloda da yeni bir kayıt oluşturabilirsin.
Bunu SP içinden de yapabilirsin.
Trigger ile yapmak işi garanti altına alır. Örneğin SP kullanmadan doğrudan elle tablo üzerindekayıt oluşturulursa ikinci tabloda log kaydı atlanabilir.
Yalnız
INSERT INTO Log VALUES('Takim Eklenemedi:'+@takimAd)
kodunda bir problem var. @TakimAd NULL olduğunda bu duruma giriyor ve Concatenate işlemi de NULL olacaktır. Bu durumda da Log tablosuna NULL bir kayıt atmış olacaksınÖrnekteki Trigger ile ilgili asıl problem ise, bu trigger kodunun sanki bir INSERT işleminde sadece bir kayıt girileceği üzerine tasarlanmış olması
Yani
INSERT INTO Takim SELECT .... FROM Takim2
gibi bir kod büyük hatalara yol açabilir.
O yüzden, özellikle değişkenler kullanarak yazılmış Trigger kodları potansiyel hatalar taşırlar. Bunların yerine SET based düşünerek çözümler üretmek de fayda var.
Aşağıdaki örnekler yol gösterici olabilir
http://www.kodyaz.com/articles/sql-trigger-example-in-sql-server-2008.aspx
http://www.kodyaz.com/articles/sql-trigger-sql-server-trigger-example-to-log-changes-history.aspx
http://www.kodyaz.com/articles/log-price-changes-using-sql-server-trigger-in-sql-server.aspx
SQL Server and T-SQL Tutorials
My Personal Site
Our true mentor in life is science- Yanıt Olarak İşaretleyen Serkan Bark 14 Temmuz 2011 Perşembe 11:34
Tüm Yanıtlar
-
Merhaba,
triggerla tablo oluşturamzsam da insert işlemi yapmak istiyorum aşağıdaki kodu buldum ama bana çok fazla ve karışık geldi daha güzel ve sade bi yolunu bilen varsa yardım ederse sevinirim.Teşekkürler.İyi çalışmalar..
yazmayı unutmuşum=)aşağıdaki kod:
CREATE TABLE Takim
(
Id INT IDENTITY(1,1) NOT NULL,
TakimAd NVARCHAR(50) NULL,
KurulusYil INT NULL,
Stad NVARCHAR(50) NULL,
Baskan NVARCHAR(50) NULL,
CONSTRAINT PK_Takim PRIMARY KEY(Id)
)
CREATE TABLE Log
(
Id INT IDENTITY(1,1) NOT NULL,
Aciklama NVARCHAR(100) NULL,
CONSTRAINT PK_Log PRIMARY KEY(Id)
)
CREATE TRIGGER TakimEkleniyor ON Takim
INSTEAD OF INSERT
AS
BEGIN
DECLARE @takimAd NVARCHAR(30)
SET @takimAd = (SELECT Ad From INSERTED)
IF(@takimAd IS NOT NULL)
BEGIN
INSERT INTO Satis.Takim
SELECT Ad,Stad,Baskan,KurulusYil FROM INSERTED
END
ELSE
BEGIN
INSERT INTO Log VALUES('Takim Eklenemedi:'+@takimAd)
END
END
CREATE TRIGGER TakimEklendi ON Takim
AFTER INSERT
AS
BEGIN
INSERT INTO Log
SELECT 'Takım Eklendi->'+Ad+':'+Stad+':'+Baskan+':'+
CAST(KurulusYil AS CHAR(4)) FROM INSERTED
END
-
Store Procedure üzerindemi değişkenleri tanımlayıp , kayıt işlemleri yaptıracaksın ? Trigger herhangi bir fonksiyonu tetiklemek için kullanılır. Trigger olmadan da bunu yapabilirsiniz ama sorduğum gibi store procedure üzerinden mi kayıt işlemleri olacak?
Her zaman iyi olmayı isteyin, mükemmel olun. ilkaytaskiran[at]hotmail[dot]com [dot] tr ilkaytaskiran@hotmail.com.tr -
-
Merhaba,
Trigger adından anlasılacagı üzere bir olaydan tetiklenirler yani ilk olarak trigerdan bagımsız bir olaya gerceklesmesi egerkir ve trigger istediginz işlemi yapması için tetiklenir. Örneğin bir tabloya herhangibir yolla bir kayıt insert edebilirsiniz yada update edebilirsiniz bu olaylardan sonra eger tanımlamıssanız bir trigger tetiklenir ve istediginiz işlemleri yapar.
-
Örnek verecek olursa trigger ile senin kayıt edeceğin sırada o kayıt varmı yok mu diye kontrol ettirebilirsin. Olay burda veri kaydetmek iken sen tetiklediğin (trigger) ile o verinin kaydedileceği anda böyle bir kayıt varmı yokmu diye sorgulayabilirsin. Trigger lar tam olarak bu gibi işlere yarar.Diğer konu ise veri eklemeyi insert ile yapabilirsin . Tablonu oluşturduktan sonra
Create table ...
{}
as
begin
insert komutu
end
şeklinde verilerini tanımladığın parametrelere göre içeri aldırırsın ve sql e kaydedersin
Her zaman iyi olmayı isteyin, mükemmel olun. ilkaytaskiran[at]hotmail[dot]com [dot] tr ilkaytaskiran@hotmail.com.tr -
trigger nedir, nasıl yazılırı mı öğrenmek istiyorsunuz yoksa daha spesifik birşey mi öğrenmek istiyorsunuz?
bu örnekte Employees tablosuna bir trigger yazılıyor. Employees tablosunda INSERT işlemi gerçekleştikten sonra bu trigger çalışacak ve içerisine yazılan işlemleri yapacak. trigger içerisinde tablo da oluşturabilirsiniz, öncesinde o isimde bir tablo olup olmadığını kontrol ederek tabii ki.CREATE TRIGGER trgTest ON Employees AFTER INSERT AS -- trigger' ın otomatik olarak yapacağı işler
- Yanıt Olarak İşaretleyen Serkan Bark 14 Temmuz 2011 Perşembe 11:34
-
Merhaba,
Trigger kullanarak A tablosuna bir kayıt girildiğinde başka bir tabloda da yeni bir kayıt oluşturabilirsin.
Bunu SP içinden de yapabilirsin.
Trigger ile yapmak işi garanti altına alır. Örneğin SP kullanmadan doğrudan elle tablo üzerindekayıt oluşturulursa ikinci tabloda log kaydı atlanabilir.
Yalnız
INSERT INTO Log VALUES('Takim Eklenemedi:'+@takimAd)
kodunda bir problem var. @TakimAd NULL olduğunda bu duruma giriyor ve Concatenate işlemi de NULL olacaktır. Bu durumda da Log tablosuna NULL bir kayıt atmış olacaksınÖrnekteki Trigger ile ilgili asıl problem ise, bu trigger kodunun sanki bir INSERT işleminde sadece bir kayıt girileceği üzerine tasarlanmış olması
Yani
INSERT INTO Takim SELECT .... FROM Takim2
gibi bir kod büyük hatalara yol açabilir.
O yüzden, özellikle değişkenler kullanarak yazılmış Trigger kodları potansiyel hatalar taşırlar. Bunların yerine SET based düşünerek çözümler üretmek de fayda var.
Aşağıdaki örnekler yol gösterici olabilir
http://www.kodyaz.com/articles/sql-trigger-example-in-sql-server-2008.aspx
http://www.kodyaz.com/articles/sql-trigger-sql-server-trigger-example-to-log-changes-history.aspx
http://www.kodyaz.com/articles/log-price-changes-using-sql-server-trigger-in-sql-server.aspx
SQL Server and T-SQL Tutorials
My Personal Site
Our true mentor in life is science- Yanıt Olarak İşaretleyen Serkan Bark 14 Temmuz 2011 Perşembe 11:34