Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

SQL - Trigger


sigisMoNd

Öne çıkan mesajlar

umarim sql den ve su trigger olayindan anlayan vardir. bir sorum olucakti.

su asagidaki 2 tablo verilmis.

said:

----------- -----------
| A | | B |
----------- -----------
| a1 | a2 | | b1 | b2 |
|---------| |---------|
|int | 8 | |int | 2 |
|int | 1 | |reg | 6 |
|reg | 3 | |int | 1 |
|---------| |---------|


bu asagidakine gore yeni tablo olusturulacak

said:

CREATE TRIGGER wastutderdenn
AFTER INSERT ON A
REFERENCING NEW AS neuesTupel
FOR EACH ROW
WHEN (neuesTupel.a2 > (SELECT AVG(b2)
FROM B
WHERE b1=(SELECT MIN(b1) FROM B WHERE b2=(SELECT MAX (b2) from B ))))
BEGIN
INSERT INTO B VALUES (neuesTupel.a1, (1+(SELECT MAX (b2) FROM B ))); END;



bu da cevap:

said:

----------- -----------
| A | | B |
----------- -----------
| a1 | a2 | | b1 | b2 |
|---------| |---------|
|int | 8 | |int | 2 |
|int | 1 | |reg | 6 |
|reg | 3 | |int | 1 |
|int | 5 | |int | 6 |
|reg | 4 | |reg | 7 |
|---------| |---------|


mumkunse 3 yasindaki cocuga anlatirmis gibi anlatir misiniz bileniniz varsa?

sorularim:

oncelikle trigger tam olarak ne ise yarar?

after insert, before insert cevap olarak verilecek tabloda neyi degistirir?

when ile baslayan ic ice gecmis when bedingungda(sart olarak mi geciyor turkcesi bilmiyorum. bu almancasi) icten disa dogru gidilmesi gerekiyor sanirim. ama sonuc tablolarinda bu soyleneni islemleri yaptiktan sonra nasil yansiticam?

reg nedir? tabloda bu iki turun herhangi bir etkisi var midir sonuc uzerinde?

asama asama anlatildiginda bu sorularin hepsi cevaplanir diye dusunuyorum. bilen biri anlatirsa super olur. googleda arastirdim ama bu sekilde bir ornek bulamadim. anlatilani da pek anlayamadim acikcasi.

tesekkurler
Link to comment
Sosyal ağlarda paylaş

SQL bildigin ingilizce konusur gibi yazilir yahu.
said:
CREATE TRIGGER wastutderdenn
AFTER INSERT ON A
REFERENCING NEW AS neuesTupel

A'ya bir sey eklendiginde

said:
FOR EACH ROW

her bir satir icin asagidakini uygula

said:
WHEN (neuesTupel.a2 >

[her bir satiri tek tek aliyoruz ya] a2 degeri asagidaki sonuctan buyukse BEGIN'den sonraki kismi uygula
said:
(SELECT AVG(b2)
FROM B
WHERE b1=(SELECT MIN(b1) FROM B WHERE b2=(SELECT MAX (b2) from B ))))

B tablosundaki, en buyuk b2 degerini al. Sonra yine B tablosunda bu degere [en buyuk b2] sahip olan satirlardaki b1'lere bak ve en kucugunu al. Sonra yine B tablosunda, bu degere [en kucuk b1] sahip olan satirlardaki b2 degerlerinin ortalamasini bul.

--Bu buldugun deger a2'deki herhangi bir satirdan buyukse asagidakini uygula
said:
BEGIN
INSERT INTO B VALUES (neuesTupel.a1, (1+(SELECT MAX (b2) FROM B ))); END;

B tablosundan en buyuk b2 degerini bul, 1 ekle, bunu A tablosunun hangi satirini isliyorsan oradaki a1'le birlikte B tablosuna ekle.

---
trigger ne ise yarar... sozluk anlamina bak.
Link to comment
Sosyal ağlarda paylaş

×
×
  • Yeni Oluştur...