0

結合に基づいて2つの異なる列を更新する挿入トリガーの後、これがあります。基本的に、Id を値に変換します。ID の 1 つが一致しない場合 (つまり、デフォルトではゼロ) を除いて、これは正常に機能します。その後、どちらも更新されません。結合が失敗した場合は、null を挿入するだけです。

CREATE TRIGGER [AfterHistoryInsert]
ON [Jet].[HistoryEntity]
FOR INSERT
AS
BEGIN
    Update t1 Set t1.OldValue = t2.Value, t1.NewValue = t3.Value 
        From Jet.HistoryEntity t1
        join Jet.LookupListItemEntity t2 on Cast(t1.OldValue as int) = t2.Id
        join Jet.LookupListItemEntity t3 on Cast(t1.NewValue as int) = t3.Id
        inner join inserted i on i.Id = t1.Id
        where t1.FieldName like '%Id'
END

グレッグ

4

2 に答える 2

0

より大きなテーブルに更新する場合、提案の1つは次のようになります。-更新するすべての列(あなたの場合は値)を一時テーブルに選択する-一時テーブルへの左外部結合を使用してステートメントを更新します。

于 2013-09-30T01:59:37.340 に答える