IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   Delphi (https://www.ircforumlari.net/delphi/)
-   -   sql serverda trigger sp key list (https://www.ircforumlari.net/delphi/689139-sql-serverda-trigger-sp-key-list.html)

Kaf_Dağı 16 Mart 2015 12:09

sql serverda trigger sp key list
 
sql serverda trigger sp key list


Kod:

sysobjects Tablosu Obje tipleri
 
C = CHECK constraint
D = Default or DEFAULT constraint
F = FOREIGN KEY constraint
L = Log
FN = Scalar function
IF = Inline table-function
P = Stored procedure
R = Rule
PK = PRIMARY KEY constraint (type is K)
RF = Replication filter stored procedure
S = System table
TF = Table function
TR = Trigger
U = User table
UQ = UNIQUE constraint (type is K)
V = View
X = Extended stored procedure
 
//U kulanıcı tabloları
SELECT * FROM sysobjects WHERE (xtype = 'U')
 
//TR trigger
SELECT * FROM sysobjects WHERE (xtype = 'TR')
 
 
//P trigger
SELECT * FROM sysobjects WHERE (xtype = 'P')
 
 
//anahtar sahaların gösterimi
sp_MStablekeys [tbl_table]
 
 
//sql servardan excele bilgi atmak
 
sp_makewebtask @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]putfile = N'C:\WebPage3.xls',
                                @[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]='Select * from [tbl_table] '
 
 
 
CREATE TRIGGER TR_Deneme ON dbo.Deneme
FOR INSERT,UPDATE
AS
DECLARE
  @vTemp1    VARCHAR(25),
  @vTemp2    VARCHAR(25),
  @vTemp12    VARCHAR(50),
 
SELECT @vTemp1 = Temp1 , @vTemp2 = Temp2 FROM inserted
 
SET @vTemp12 = @vTemp1 + @vTemp2
 
UPDATE Deneme SET Temp12 = @vTemp12
WHERE @vTemp1 = Temp1
  AND @vTemp2 = Temp2
 
 
 
Bu örnekte görüldüğü gibi trigger tek kayıt eklendiğinde bu işlemi yapacaktır ve doğru çalışacaktır. Oysa birden fazla kayıt ekleme yaptığınızda ise sadece son kayıdın Temp21 alanı değişecektir.
 
Birden fazla kayıt ekleme olduğunda tetikleyicinin çalışması için :
 
Örnek 2
--------------------------------------------------------------------------------
 
 
 
CREATE TRIGGER TR_Deneme ON dbo.Deneme
FOR INSERT,UPDATE
AS
 
UPDATE d SET d.Temp12 = i.Temp1 + i.Temp2
FROM Deneme d,inserted i
WHERE d.Temp1 = i.Temp1
  AND d.Temp2 = i.Temp2
 
 
 
Yukarıdaki yapı birden fazla kayıt eklendiğinde herbir kayıt için tetikleyicinin doğru çalışmasını sağlayacaktır.
inserted tablosu üzerinden ana tabloya inner join kurarak sorunu çözebiliriz. Yani birden fazla kayıt ekleme olması düşünülen tablolardaki tetikleyiciler için inserted tablosundan değişkenlere değer atamak yerine update query içinde inserted tablosu üzerinden join kurarak ve yapılacak işlemleri T-SQL kodlarıyla değil SQL kodlarıyla yaparak her bir eklemede tetikleyicinin çalışması sağlanabilir.Daha karmaşık yapılarda IF yerine CASE WHEN <değişken>"Oparatör"<Değer> THEN <Sonuç> ELSE <Sonuç> END kullanarak çözebilirsiniz. Daha da karmaşık yapılar için daha çok SQL komutu kullanmak gerekebilir.



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 13:50.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk