powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / set nocount on и @@rowcount
6 сообщений из 6, страница 1 из 1
set nocount on и @@rowcount
    #39606441
Bekzod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые, подскажите пожалуйста. Почему у меня опция set nocount on сбрасывает @@rowcont в триггере в 0, это так должно быть?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
create table a(id int, name varchar(10))
go

create trigger a_update on a
for update
as
begin
	set nocount on	

	if @@rowcount = 0 return
	
	if exists(select 1 from inserted i join deleted d on i.id = d.id and i.name <> d.name)
		begin
			raiserror('abort update', 16, 1)
			rollback transaction
			return
		end
end
go

insert into a(id, name) values(1,'a')
go
update a set name = 'b' where id = 1
go
drop table a
go


если в этом примере закоментировать set nocount on то триггер отрабатывает, иначе вылетает с триггера на первом If
...
Рейтинг: 0 / 0
set nocount on и @@rowcount
    #39606443
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bekzod,
эти проклятые хелпы, никогда не читайте их, ну хотя бы до обеда
авторStatements such as USE, SET <option>, DEALLOCATE CURSOR, CLOSE CURSOR, BEGIN TRANSACTION, or COMMIT TRANSACTION reset the ROWCOUNT value to 0.
...
Рейтинг: 0 / 0
set nocount on и @@rowcount
    #39606444
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и более правилная проверка
Код: sql
1.
IF NOT EXISTS (SELECT 1 FROM INSERTED) RETURN;
...
Рейтинг: 0 / 0
set nocount on и @@rowcount
    #39606445
Bekzod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKBekzod,
эти проклятые хелпы, никогда не читайте их, ну хотя бы до обеда
авторStatements such as USE, SET <option>, DEALLOCATE CURSOR, CLOSE CURSOR, BEGIN TRANSACTION, or COMMIT TRANSACTION reset the ROWCOUNT value to 0.

оуу, вот оно что

TaPaKну и более правилная проверка
Код: sql
1.
IF NOT EXISTS (SELECT 1 FROM INSERTED) RETURN;



понадеялся на @@rowcount млин)) да останусь на этом варианте. Спасибо))
...
Рейтинг: 0 / 0
set nocount on и @@rowcount
    #39606446
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bekzod,

@@ROWCOUNT не удачный выбор при использовании MERGE, так что на выбор ну и естественно 1й инструкцией, SET NOCOUNT ON можно и потом
...
Рейтинг: 0 / 0
set nocount on и @@rowcount
    #39606449
Bekzod
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

В моём случае лучше вообще отказаться от @@rowcount. Процы и триггеры не только я правлю, вдруг кому-то не понравится что set nocount on не в начале и опять 25))
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / set nocount on и @@rowcount
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]