0

MS SQL の挿入トリガーは、結果を返すときに問題を引き起こします。結果の送信を無効にする方法はありますか? 「set nocount on」を使用しましたが、あまり効果がないようです...

create trigger tr_insert_raw_data
on raw_data
instead of insert
as
begin
 set nocount on

 declare @query varchar(max);
 declare @rev int;
 declare @id int;
 declare @oldrev int;
 declare @contextinfo VARBINARY(128)  

 select @contextinfo = context_info()
 if @contextinfo = 0x00001
 begin
  insert into raw_data select * from inserted
  return
 end

 select * into #query from inserted
 set @id = (select count(distinct id) from raw_data);
 set @id += 1;
 insert into revisions (username, hostname, ts) values (SYSTEM_USER, HOST_NAME(), GETDATE())
 set @rev = (select max(id) from revisions);

 select @oldrev = revision_id from inserted;
 if @oldrev is null set @oldrev=@rev-1;

 select * into #inserted from inserted
 update #inserted set revision_id = @rev, id = @id
 select * from #inserted
 insert into raw_data select * from #inserted
 insert into edges (a, b) values (@oldrev, @rev)
end
4

1 に答える 1

0

どのような結果を得ていますか?クエリを簡単に確認した後、最初に考えたのは、

select * from #inserted

あなたが持っている行(下から3番目の行)。この行は、結果を要求していることを示していますが、それがおそらく結果を取得している理由ですか?

テーブルから値を選択して変更したりカスタム選択したりする必要がある場合は、おそらく CTE が役に立ちますか? (共通テーブル式)

于 2012-08-01T03:45:10.067 に答える