2017-09-19 13 views
0

4つのテーブルが絶えず切り捨てられ、別のシステムからSQL Serverに5分ごとにデータが挿入され、更新されます。だから私は更新を作成し、もし存在するか、またはマージを使ってSQL Serverの別のものを更新するトリガを挿入する必要があります。更新と挿入トリガー

Select 
[Barcode] 
,[TradingPartnerOrderNo] 
,[ProductNo] 
,[BarcodeCreatedDateTime] 
,[BarcodeScheduledDateTime] 
,[CancelledIndicator] 
,[CancelledDateTime] 
,[SiteIndicator] 
,[InterfaceTimeStamp] 
,[OperationDate] 
,[Operation] 
from [dbo].[BookingView] 
+0

こんにちは、このような何か!あなたの質問は何ですか? [How to Ask](https://stackoverflow.com/help/how-to-ask)をお読みください。 –

答えて

0

SQL Server 2008以降を使用している場合は、MERGEを使用してください。私にとって

MERGE INTO table2 AS TGT 
USING 
(

    Select 
     [Barcode] 
    ,[TradingPartnerOrderNo] 
    ,[ProductNo] 
    ,[BarcodeCreatedDateTime] 
    ,[BarcodeScheduledDateTime] 
    ,[CancelledIndicator] 
    ,[CancelledDateTime] 
    ,[SiteIndicator] 
    ,[InterfaceTimeStamp] 
    ,[OperationDate] 
    ,[Operation] 
    FROM [dbo].[BookingView] 
) AS SRC ON SRC.Barcode = TGT.BarCode AND 
WHEN NOT MATCHED THEN 
    INSERT (Barcode, TradingPartnerOrderNo, ...) 
    VALUES (SRC.Barcode, SRC.TradingPartnerOrderNo, ...); 
0

それはあなたのdemande非常に明確ではありませんが、ここでトリガの例である:

CREATE TRIGGER [dbo].[up_update_mytable] 
ON [dbo].[MyTable] FOR UPDATE 
AS 
DECLARE @ID VARCHAR(50) 

SELECT @ID = ID FROM INSERTED --Use INSERTED keyword for insert and update triggers to get informations of the inserted or updated record. 

UPDATE MyOtherTable SET 
Column1 = 'test value', 
Column2 = 'test value 2' 
WHERE OtherTableID = @ID 
+0

これは**悪い**の例です。 *ステートメント*ごとに1回トリガされるため、 'inserted'(および' deleted')には0,1または*複数の行を含めることができます。あなたのトリガは、それらの行の* one *から 'id 'を任意に取得し、他の行を*無視します。 –

関連する問題