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

Откуда:
Сообщений: 325
Нужно при обновлении сохранить предыдущую версию. Триггер ON UPDATE не позволяет сделать
insert xxx (f1, f2, ...)
select f1, f2, ...
from deleted
т.к. нет доступа к полям ntext. Как все-таки реализовать сохранение?
9 янв 05, 22:08    [1232300]     Ответить | Цитировать Сообщить модератору
 Re: Копирование старой версии записи в триггере  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
у instead of-триггеров, по-моему, нет такого ограничения
9 янв 05, 23:06    [1232332]     Ответить | Цитировать Сообщить модератору
 Re: Копирование старой версии записи в триггере  [new]
aleks2
Guest
Копируй новую версию.
Тогда в предыдущей записи будет старая.
10 янв 05, 06:31    [1232483]     Ответить | Цитировать Сообщить модератору
 Re: Копирование старой версии записи в триггере  [new]
sraider
Member

Откуда:
Сообщений: 325
aleks2
Копируй новую версию.
Тогда в предыдущей записи будет старая.


Не пойдет... Primary key - identity
10 янв 05, 15:57    [1233363]     Ответить | Цитировать Сообщить модератору
 Re: Копирование старой версии записи в триггере  [new]
sraider
Member

Откуда:
Сообщений: 325
Ray D
у instead of-триггеров, по-моему, нет такого ограничения


В случае instead of триггера придется самому в нем таблицу обновлять?
10 янв 05, 15:59    [1233372]     Ответить | Цитировать Сообщить модератору
 Re: Копирование старой версии записи в триггере  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
create table xxx(
    id int,
    f_old ntext,
    f_new ntext
)
go
create table t1(
    id int,
    f ntext
)
go
create trigger trg_t1_u2
on t1
instead of update
as
begin
    insert into xxx (id, f_old, f_new)
    select
        i.id, d.f, i.f
    from
        inserted i
        inner join deleted d on i.id = d.id

    update
        t1
    set
        t1.f = i.f
    from
        inserted i
        inner join t1 t on i.id = t.id
end
go
insert into t1 values (1, 'aaa')
select * from t1
update t1 set f = 'bbb'
select * from t1
select * from xxx
11 янв 05, 12:26    [1234925]     Ответить | Цитировать Сообщить модератору
 Re: Копирование старой версии записи в триггере  [new]
sraider
Member

Откуда:
Сообщений: 325
понял. спасибо!
11 янв 05, 13:15    [1235189]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить