Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Триггер  [new]
skywoker74
Member

Откуда:
Сообщений: 41
Хочу при редактировании записи оставлять её старое значение, и добавлять которое ввел. Для этого сделал триггер на update:
CREATE TRIGGER UP ON [dbo].[Company] 
FOR UPDATE
AS
Declare @NC varchar(50)
SET NOCOUNT ON
select @NC=NameCompany from Deleted
update Company set NameCompany=@NC where Company.NameCompany=@NC
print @NC

select @NC=NameCompany from Inserted
insert into Company (NameCompany) Values(@NC)
print @NC
Триггер работает не так как хочется, но чувствую, что истина где то рядом. Подскажите, что не так в триггере. Правильно ли использовать для этого триггер?
24 дек 09, 18:04    [8115376]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
а если записей больше чем 1 ?
Он вообще когда то заканчивает свою работу етот триггер ? По факту,он своими действиями вызывает свое срабатывание - типа вечного двигателя )
-------------------------------------
Jedem Das Seine
24 дек 09, 18:09    [8115398]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36808
Особенно прикольно триггер работает, когда апдейтим более одной записи. Или ни одной.
24 дек 09, 18:09    [8115401]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
вот можно подумать что таблица Company лутше)
Скорее всего даже ПК по ней нет ) и все поля NULL
-------------------------------------
Jedem Das Seine
24 дек 09, 18:13    [8115414]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
skywoker74
Member

Откуда:
Сообщений: 41
Maxx,
Допустим, что можно апдейтить не больше одной записи за раз. А как триггер должен заканчивать свою работу?
24 дек 09, 18:17    [8115438]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
ну неплохоб проверять вложеность триггера в таком коде..ето минимум
-------------------------------------
Jedem Das Seine
24 дек 09, 18:20    [8115446]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
skywoker74
Member

Откуда:
Сообщений: 41
Maxx,
А как проверить вложенность триггера?
24 дек 09, 18:44    [8115529]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
TRIGGER_NESTLEVEL (Transact-SQL)
-------------------------------------
Jedem Das Seine
24 дек 09, 18:49    [8115544]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
aleks2
Guest
Проще надо быть
CREATE TRIGGER UP ON [dbo].[Company] 
FOR UPDATE
AS
if TRIGGER_NESTLEVEL(@@PROCID)>1 RETURN
SET NOCOUNT ON
insert into Company(NameCompany) select NameCompany FROM deleted
RETURN

24 дек 09, 18:54    [8115567]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
aleks2,

как по мне , такого вообще не надо делать)
24 дек 09, 18:57    [8115576]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
skywoker74
Member

Откуда:
Сообщений: 41
aleks2,
Спасибо. Всё работает!
24 дек 09, 19:05    [8115598]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
skywoker74
aleks2,
Спасибо. Всё работает!


Угу. Я даже могу себе представить результат этой работы, например, для инструкции

UPDATE
  Company
SET
  NameCompany = NameCompany
24 дек 09, 20:09    [8115734]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
Local Hoster
Member

Откуда: default city
Сообщений: 90
pkarklin
skywoker74
aleks2,
Спасибо. Всё работает!


Угу. Я даже могу себе представить результат этой работы, например, для инструкции

UPDATE
  Company
SET
  NameCompany = NameCompany


Об этом будет следующий вопрос.
24 дек 09, 23:29    [8116113]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
aleks2
Guest
pkarklin
skywoker74
aleks2,
Спасибо. Всё работает!


Угу. Я даже могу себе представить результат этой работы, например, для инструкции

UPDATE
  Company
SET
  NameCompany = NameCompany


В полном соответствии с пожеланиями тредстартера: вставляется новое и оставляется старое значение... хе-хе.
25 дек 09, 07:12    [8116446]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить