テーブルに新しく挿入された行の同じテーブルの別の列の値と同じ列に値を挿入するトリガーを作成する方法。
以下のようなテーブルがあるとします
ColumnA | ColumnB
行がテーブルに挿入されるか、列Bの値が更新されるとすぐに、列Bの値が列Aに挿入されるようにします。ただし、その逆はいけません。つまり、columnA の値を columnB に挿入します。
以下のコードは INSERT のみを処理します。テーブルの挿入と更新の両方を処理する方法、つまり columnB の値が挿入または更新されたときの処理方法を教えてください。
CREATE TRIGGER inserupdate
ON triggertestTable
AFTER INSERT,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
declare @value int
select @value=columnB from inserted
update triggertestTable
set columnA=@value
END
GO
以下のように値が挿入されている場合、これは正常に機能します
insert into triggertestTable(columnB) values('xyz')
ColumnB の値が columnA に挿入されます
ColumnA | ColumnB
xyz | xyz
ただし、他のアプリケーションが columnA に値を挿入すると、両方で null 値が更新されます
insert into triggertestTable(columnA) values('pqr')
現在、記録は
ColumnA | ColumnB
xyz | xyz
NULL | NULL
正しいレコードセットは次のようになります
ColumnA | ColumnB
xyz | xyz
pqr | NULL
この問題を解決する方法。