2012-08-01 5 views
0

Триггер вставки MS SQL вызывает некоторое горе, когда он возвращает результат. Есть ли способ отключить любой результат от отправки? Я использовал «набор NOCOUNT на», но это, кажется, не делать ...Подавить результат от триггера вставки

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 @[email protected]; 

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 

ответ

0

, какой результат вы получаете? После краткого обзора вашего запроса моя первая мысль, что вы получаете результаты из-за линии

select * from #inserted 

у вас есть (третья строка снизу). Эта строка говорит мне, что вы запрашиваете результаты, которые, вероятно, почему вы получаете?

Если вам нужны значения, выбранные из таблицы для изменения или пользовательского выбора, возможно, CTE поможет вам? (Common Table Expressions)

+0

О да, конечно. У меня была эта строка для отладки и забыла ее удалить. Большое спасибо! – Max

+0

Рад, что я мог помочь. Пожалуйста, укажите вопрос как ответ, выбрав мой пост как правильный ответ. Спасибо и Njoy! – Neville

+0

Конечно ........... – Max

Смежные вопросы