Ttrigger oluşturmak
-
21 Mart 2012 Çarşamba 09:00
Merhaba arkadaşlar benim 2 Adet tablom var a ve b tablosu kullanıcı a tablosuna insert ederken insert işleminden sonra bir trigger çalışmasını istiyorum triggerde şunu yapmak istiyorum
örneğin a tablosundaki ADISOYADI = şu'ise ve MIKTAR < 10 büyükse bu iki şart sağlanıyorsa
b tablosunda ADISOYADI aynıysa durum kolonunu set etmek istiryorum SET durum='1' gibi
Aşşagıdaki kod çalışmadı nasıl bir kod yazmalıyım arkadaşlar yardım ederseniz çok sevinirim
CREATE TRIGGER DENEME ON a
AFTER INSERT
AS
BEGIN
DECLARE @ADISOYADI NVARCHAR(20)
SELECT @ADISOYADI= ADISOYADI FROM inserted
IF EXISTS(SELECT MIKTAR FROM a WHERE ADISOYADI=@ADISOYADI AND MIKTAR < 10 )
BEGIN
UPDATE b SET durum='1' WHERE ADISOYADI=@ADISOYADI
ROLLBACK TRANSACTION
RETURN
END
Tüm Yanıtlar
-
21 Mart 2012 Çarşamba 10:39Moderatörrollback transaction ? Rollback edeceksen niye update ediyorsun?
-
21 Mart 2012 Çarşamba 10:52Çetin bey sadece UPDATE yapmak istiyorum rollback satırını kaldırdım ama yinede olmadı rica etsem kücük bir örnek yazarmısınız.
-
21 Mart 2012 Çarşamba 11:31Moderatör
AdiSoyadi iki tablo arasinda baglanti icin hic de iyi bir kolon gibi durmuyor, onun ornek oldugunu dusunerek ve kodundan senin yapmak istedigini anladigim kadariyla:
use test; go CREATE TABLE trigTestA ( id INT IDENTITY PRIMARY KEY , adisoyadi VARCHAR(50) , miktar INT ); CREATE TABLE trigTestB ( id INT IDENTITY PRIMARY KEY , adisoyadi VARCHAR(50) , durum INT ); go INSERT INTO trigTestB ( adisoyadi, durum ) VALUES ( 'AtakanVolkan', 0 ); INSERT INTO trigTestB ( adisoyadi, durum ) VALUES ( 'CetinBasoz', 0 ); GO CREATE TRIGGER deneme ON trigTestA AFTER INSERT AS BEGIN UPDATE trigTestB SET durum = 1 FROM inserted WHERE trigTestB.adisoyadi = INSERTED.adisoyadi AND INSERTED.miktar < 10 END GO INSERT INTO trigTestA (adisoyadi,miktar) VALUES ('AtakanVolkan',100); INSERT INTO trigTestA (adisoyadi,miktar) VALUES ('CetinBasoz',1); SELECT * FROM trigTestB; INSERT INTO trigTestA (adisoyadi,miktar) VALUES ('AtakanVolkan',5); SELECT * FROM trigTestB;- Yanıt Olarak İşaretleyen AtakanVolkan 21 Mart 2012 Çarşamba 12:01
-
21 Mart 2012 Çarşamba 11:50
Çetin bey çok çok tşk ederim .
- Düzenleyen AtakanVolkan 21 Mart 2012 Çarşamba 12:01