2016-03-22 11 views
0

私は2つのテーブルを持っています。 spesific列に新しい値を挿入すると、2番目の表の別の列を更新したいと考えています。私はそれをどのようにすることができますか?特定の列の挿入トリガー

ここには簡単な例がありますが、「キーワード 'Insert'の近くに不正な構文があります。エラーは予期した通りです。

Create trigger trigger_Insert_Months 
on [Quantities] 
after Insert 
As 
if Insert([Work Name]) 
begin 
    declare @NewWorkName varchar(200) 
    select @NewWorkName = [Work Name] from inserted 
    insert into [April]([Work Name]) 
    values (@NewWorkName) 
End 

答えて

0

これを試してみてください:私が間違っている場合

CREATE TRIGGER trigger_Insert_Months 
ON [Quantities] 
AFTER INSERT 
AS 
BEGIN 
    INSERT INTO [April]([Work Name]) 
    SELECT [Work Name] from inserted 
    WHERE NOT EXISTS (SELECT 1 FROM [Quantities] WHERE [Quantities].[Work Name] = INSERTED.[Work Name] AND INSERTED.PrimaryKey != [Quantities].[PrimaryKey]) 
End 
+0

表2に更新されるカラムを表2及びTABLE1およびCOL1の主キーを有するメッセージ4104、レベル16、状態1、プロシージャtrigger_Insert_Months、ライン43 とID列をINSERTEDマルチパート識別子」に変更 .Work Name "はバインドできませんでした。 メッセージ4104、レベル16、状態1、プロシージャtrigger_Insert_Months、行43 マルチパート識別子「INSERTED.PrimaryKey」はバインドできませんでした。 Msg 207、レベル16、状態1、プロシージャtrigger_Insert_Months、行43 'PrimaryKey'列名が無効です。 – Macukadam

+0

'Quantities'と' April'のテーブル定義を表示できますか? 'PrimaryKey'では、これを' Quantities'テーブルの主キー列の名前に置き換えなければならないことを意味しました。 – AKS

+0

私はそれがたくさんありがとう! – Macukadam

0

は私を修正します。 table1に値を挿入し、table2の値を挿入した値で更新したいとします。

create trigger tr1 on Table1 
for insert 
as 
begin 
if exists (select 1 from inserted) 
begin 
update a 
set a.col1 = b.col 
from table2 as a 
inner join (select * from inserted) as b 
on a.id = b.id 
end 
end 

このコードは、Table1で挿入が行われたときにトリガーをアクティブにし、挿入された行でcol1のtable2の値を更新します。カラム

関連する問題