Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Модификация данных с помощью Update / 9 сообщений из 9, страница 1 из 1
04.07.2002, 13:12:43
    #32035141
Roman M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модификация данных с помощью Update
Пишу в Query Analyzer:
Update table1
set column1 = column1+1
Все работает.

Пишу то же самое в триггере:

Create Trigger Table2_Trigger
On dbo.Table2
For Insert, Update, Delete
As
update Table1
set Column1 = Column1+1

Выдает следующее:
Key column information is insufficient or incorrect. Too many rows were affected by update.

Почему в Query Analyzer это работает, а то же самое в триггере - не хочет?
...
Рейтинг: 0 / 0
04.07.2002, 13:36:41
    #32035150
GreenSunrise
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модификация данных с помощью Update
Приведенный пример у меня работает. Может, ты слишком упростил код, когда привел его здесь?
...
Рейтинг: 0 / 0
04.07.2002, 13:37:52
    #32035151
ziktuw
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модификация данных с помощью Update
Эту ошибку выдает не триггер, а то клиентское средство, которым ты выполняешь запрос. С триггером все в порядке, а с этим клиентским приложением - нет. Но ему можно мозги вправить, если в триггере первой строчкой поставить SET NOCOUNT ON.
...
Рейтинг: 0 / 0
04.07.2002, 13:50:59
    #32035156
Roman M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модификация данных с помощью Update
Ура, заработало после того как вставил строку
SET NOCOUNT ON
Спасибо, Dankov!!!!!!!!
...
Рейтинг: 0 / 0
04.07.2002, 14:33:58
    #32035165
Roman M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модификация данных с помощью Update
И сразу наткнулся на новую проблему
после того как добавил WHERE:

Create Trigger Table2_Trigger
On dbo.Table2
For Insert, Update, Delete
As
SET NOCOUNT ON
update Table1
set Column1 = Column1+1
Where Column1>5

Ругается, что подзапрос возвращает более 1 значения.
Если ">" поменять на "=", то не ругается.

Это, похоже, никак не победить???
...
Рейтинг: 0 / 0
04.07.2002, 15:06:41
    #32035176
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модификация данных с помощью Update
Что-то Вы не дгоовариваете....

Вот так работает:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
use tempdb
go
create table t1( k int primary key clustered, v int )
go
insert into t1 (k, v) values ( 1 ,  101 )
insert into t1 (k, v) values ( 2 ,  102 )
insert into t1 (k, v) values ( 3 ,  103 )
insert into t1 (k, v) values ( 4 ,  104 )
go
select * from t1
update t1
set v = v +  1 
where v>  101 
select * from t1
go
drop table t1

И в триггере будет работать...
...
Рейтинг: 0 / 0
04.07.2002, 16:48:11
    #32035212
Roman M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модификация данных с помощью Update
Да, alexeyvg, вы правы.

Я не договариваю следующее:

В таблице Table1 имеются триггеры, которые срабатывают на изменение в столбце Column1.
В этом, видимо, и собака зарыта.

Пробовал изменять данные в другой таблице, без триггеров. Все работает.
...
Рейтинг: 0 / 0
05.07.2002, 06:38:49
    #32035273
olegusan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модификация данных с помощью Update
У меня такое подозрение, что у таблички Table1
отсутствует Primary Key.
От этого и проблемы.
...
Рейтинг: 0 / 0
05.07.2002, 11:08:18
    #32035297
Roman M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модификация данных с помощью Update
Я, olegusan, не считаю себя суперпрограммистом, но и до такой степени чайником тоже не считаю.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Модификация данных с помощью Update / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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