Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एक ट्रिगर बनाएं जो एक कॉलम अपडेट होने पर एक नई तालिका में मान सम्मिलित करता है

ऐसा कुछ करना चाहिए जो आपको चाहिए। आपके पास INSERT होगा नीचे दिए गए कथन MyLogTable . में किए गए ऑपरेशन को इंगित करने वाले मानों को सम्मिलित करते हैं .

CREATE TRIGGER [dbo].[TRIG_MyTable]
ON [dbo].[MyTable]
AFTER INSERT, UPDATE

AS 

DECLARE @INS int, @DEL int

SELECT @INS = COUNT(*) FROM INSERTED
SELECT @DEL = COUNT(*) FROM DELETED

IF @INS > 0 AND @DEL > 0 
BEGIN

    -- a record got updated, so log accordingly.

    INSERT INTO MyLogTable
    SELECT 'New Values', getdate() FROM INSERTED

    INSERT INTO MyLogTable
    SELECT 'Old Values', getdate() FROM DELETED

END

ELSE 
BEGIN

    -- a new record was inserted.

    INSERT INTO MyLogTable
    SELECT 'Insert', getdate() FROM INSERTED

END

आप चाहें तो INSERTED . से कॉलम भी जोड़ सकते हैं और DELETED अपनी लॉग तालिका में भी यदि आप सम्मिलित या अद्यतन किए गए वास्तविक स्तंभ मानों को कैप्चर करना चाहते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कई जगहों पर GETDATE() का उपयोग करते समय, क्या वेरिएबल का उपयोग करना बेहतर है?

  2. एक आईडी द्वारा समूहीकृत अल्पविराम सीमांकित सूची का चयन करें

  3. एसक्यूएल 2008 में एक्सएमएल कॉलम से डेटा कैसे निकालें?

  4. STRING_AGG में DISTINCT मान उत्पन्न करें

  5. कैसे शॉर्ट-सर्किट एसक्यूएल जहां क्लॉज