0

私は2つのテーブルテーブルAとBを持っています

表 A データ


Enquiry_Id  Ckeck_In    check_Out   Place
129         2013-09-20  2013-09-23  Delhi
130         2013-08-09  2013-08-10  Agra
130         2013-08-10  2013-08-12  Punjab
130         2013-08-12  2013-08-13  Haryana

表 B データ

 Enquiry_Id        Arrives_On   Arrives_Details      
  129              2013-09-20       NA            
  130              2013-08-09       NA           

テーブル B Arrives_on Date 2013-08-09 を 2012-08-14 に更新すると、enquiry_Id が 130 になり、テーブル A のデータが自動的に check_In と Check_Out の日付に変更されます。お気に入り

 Enquiry_Id Ckeck_In    check_Out   Place
129         2013-09-20  2013-09-23  Delhi
130         2013-08-14  2013-08-15  Agra
130         2013-08-15  2013-08-17  Punjab
130         2013-08-17  2013-08-18  Haryana
4

3 に答える 3

0

DELETED以前の値 ( ) と更新された値 ( )の差を計算INSERTEDし、その差をTableA列に追加する TableB でトリガーします。

CREATE TRIGGER tgTableBUpdate ON TableB
AFTER UPDATE 
AS
BEGIN

    UPDATE a
        SET a.Ckeck_In = DATEADD(DD, DATEDIFF(DD,d.Arrives_On, i.Arrives_On), a.Ckeck_In)
       ,a.Check_Out = DATEADD(DD, DATEDIFF(DD,d.Arrives_On, i.Arrives_On), a.check_Out)
    FROM INSERTED i
    INNER JOIN DELETED d ON i.Enquiry_Id = d.Enquiry_Id
    INNER JOIN dbo.TableA a ON i.Enquiry_Id = a.Enquiry_Id AND d.Enquiry_Id = a.Enquiry_Id

END

SQLFiddle デモ

于 2013-09-11T07:31:41.407 に答える