2017-06-28 10 views
1

レコードがテーブルに挿入されたときに、異なるテーブルの同一のレコードを削除するトリガーを作成しようとしています。ここに私のコードです。SQLは、別のテーブルに挿入した後、あるテーブルのレコードを削除するためのトリガー

Create trigger [dbo].[RemoveCheckedInItems] 
    on [dbo].[UTShipOrderDetailUp] 
    after insert 
    as 

    delete from UTShipOrderDetail where UTShipOrderDetail.InvoiceID = 
    [UTShipOrderDetailUp].[InvoiceID] and 
    UTShipOrderDetail.ItemID=UTShipOrderDetailUp.ItemID 

UTShipOrderDetailテーブルとチェックインされたされたすべての項目から顧客のダウンロードがUTShipOrderDetailUpテーブルにアップロードされますので、これは在庫のチェックインのためです。 UTShipOrderDetailUpテーブルに重複レコードが挿入されている場合は、UTShipOrderDetailテーブルの重複レコードを削除する必要があります。私はVFPでプログラミングすることに慣れていますが、この文はSQLではうまく動作しません。どんな助けでも大歓迎です。

+0

ヒント: 'Exsists'、' IN' – Sami

+0

あなたが挿入された仮想テーブルを使用する必要があります。私はここで何かあなたのデザインとちょっと離れていると言わなければならない。あるテーブルから別のテーブルにデータを移動して、何かのステータスを示します。これはおそらく、あなたがやっているようにデータのコピーを保持するのではなく、列のステータス列としてはるかに適しています。 –

+0

私は同意しますが、私はテーブルにデータを挿入するプログラムを書いていませんでした。 私はSQLに慣れていないので、挿入された仮想テーブルの使い方を見ていきます。 –

答えて

0

あなたは、挿入されたテーブルに参加する必要があります。

Create trigger [dbo].[RemoveCheckedInItems] 
    on [dbo].[UTShipOrderDetailUp] 
    after insert 
    as 
    begin 
    set nocount on 
    delete u 
    from UTShipOrderDetail u 
     inner join inserted i on i.InvoiceID = u.invoiceID and i.ItemID = u.ItemID 
    end 
関連する問題