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

SQL अपडेट ट्रिगर तभी होता है जब कॉलम संशोधित होता है

आपके पास अपने प्रश्न के लिए दो रास्ते हैं:

1- अपने ट्रिगर में अपडेट कमांड का प्रयोग करें।

ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified]
   ON [dbo].[SCHEDULE]
   AFTER UPDATE
AS BEGIN
    SET NOCOUNT ON;
    IF UPDATE (QtyToRepair) 
    BEGIN
        UPDATE SCHEDULE 
        SET modified = GETDATE()
           , ModifiedUser = SUSER_NAME()
           , ModifiedHost = HOST_NAME()
        FROM SCHEDULE S INNER JOIN Inserted I 
        ON S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber
        WHERE S.QtyToRepair <> I.QtyToRepair
    END 
END

2- सम्मिलित तालिका और हटाए गए तालिका के बीच में शामिल हों का उपयोग करें

ALTER TRIGGER [dbo].[tr_SCHEDULE_Modified]
   ON [dbo].[SCHEDULE]
   AFTER UPDATE
AS BEGIN
    SET NOCOUNT ON;    

    UPDATE SCHEDULE 
    SET modified = GETDATE()
       , ModifiedUser = SUSER_NAME()
       , ModifiedHost = HOST_NAME()
    FROM SCHEDULE S 
    INNER JOIN Inserted I ON S.OrderNo = I.OrderNo and S.PartNumber = I.PartNumber
    INNER JOIN Deleted D ON S.OrderNo = D.OrderNo and S.PartNumber = D.PartNumber                  
    WHERE S.QtyToRepair <> I.QtyToRepair
    AND D.QtyToRepair <> I.QtyToRepair
END

जब आप टेबल के लिए अपडेट कमांड का उपयोग करते हैं SCHEDULE और सेट करें QtyToRepair नए मान के लिए कॉलम, यदि एक या बहु पंक्ति में पुराने मान के बराबर नया मान, समाधान 1 शेड्यूल तालिका में सभी अपडेट की गई पंक्ति को अपडेट करता है लेकिन समाधान 2 अपडेट केवल उन पंक्तियों को शेड्यूल करता है जो पुराने मान नए मान के बराबर नहीं हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DAY() SQL सर्वर में उदाहरण (T-SQL)

  2. SQL सर्वर प्रबंधन स्टूडियो (SSMS) में तालिका पंक्तियों / अभिलेखों को संपादित करें - SQL सर्वर ट्यूटोरियल / TSQL ट्यूटोरियल भाग 18

  3. MS SQL सर्वर में 24/7 IS डेटाबेस का शेड्यूल्ड रखरखाव

  4. SQL सर्वर में किसी मौजूदा तालिका में एक परिकलित कॉलम जोड़ें

  5. किसी मौजूदा कॉलम में एक पहचान जोड़ना