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

Откуда:
Сообщений: 2649
Почему этот триггер пишет Null в поле id_tab, хотя Nkv - ключевое поле?


ALTER   TRIGGER log_up_Квартира
on dbo.Квартира
for  update
AS 

INSERT INTO log_base(tabls, users, oper, dat,id_tab)
SELECT 'Квартира',SYSTEM_USER,2,GETDATE(),(SELECT NKv FROM deleted)id_tab

Заранее благодарен.
27 май 09, 11:12    [7232938]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
kot2009
Member

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

FROM deleted
Может действительно отсюда null возвращается
27 май 09, 11:15    [7232964]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Почему этот триггер пишет Null в поле id_tab, хотя Nkv - ключевое поле?
>
>
> ALTER TRIGGER log_up_Квартира
> on dbo.Квартира
> for update
> AS
>
> INSERT INTO log_base(tabls, users, oper, dat,id_tab)
> SELECT 'Квартира',SYSTEM_USER,*2*,GETDATE(),(SELECT NKvFROM deleted)id_tab
>
>
> Заранее благодарен.

потому что, update ни одной строки не затронул.
триггер в этом случае тоже выполняется, а deleted - пустая.

Posted via ActualForum NNTP Server 1.4

27 май 09, 11:17    [7232972]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
vah
Member

Откуда:
Сообщений: 2649
kot2009
vah,

FROM deleted
Может действительно отсюда null возвращается


Разве такое может быть, если nkv - ключевое и счетчик?
27 май 09, 11:17    [7232975]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2549
vah,

а если удаляется более одной записи, Ваш триггер сработает?
27 май 09, 11:20    [7233007]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Не пойму, зачем там подзапрос?
ALTER TRIGGER log_up_Квартира ON dbo.Квартира FOR  UPDATE AS
IF @@ROWCOUNT>0
BEGIN
 SET NOCOUNT ON;
 INSERT log_base(tabls, users, oper, dat, id_tab)
 SELECT 'Квартира', SYSTEM_USER, 2, GETDATE(), NKv
 FROM deleted;
END;
Сервер какой?
27 май 09, 12:24    [7233624]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
vah
kot2009
vah,

FROM deleted
Может действительно отсюда null возвращается


Разве такое может быть, если nkv - ключевое и счетчик?

При команде
DELETE FROM dbo.Квартира WHERE 1 = 2
триггер сработает, но записей не в deleted и не в inserted не будет.
Если это так важно для вас, то в начале кода триггера вставьте код типа:
IF @@ROWCOUNT = 0
   RETURN
С уважением, Алексей
27 май 09, 12:39    [7233745]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Aleksey-K
При команде
DELETE FROM dbo.Квартира WHERE 1 = 2
триггер сработает, но записей не в deleted и не в inserted не будет.
Если это так важно для вас, то в начале кода триггера вставьте код типа:
IF @@ROWCOUNT = 0
   RETURN
С уважением, Алексей
Триггер при такой команде вообще не сработает, потому что он FOR UPDATE
27 май 09, 12:41    [7233759]     Ответить | Цитировать Сообщить модератору
 Re: Триггер  [new]
Aleksey-K
Member

Откуда: Москва
Сообщений: 3116
iap

Триггер при такой команде вообще не сработает, потому что он FOR UPDATE

Ну да... виноват... обознался...:)
27 май 09, 13:02    [7233922]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить