Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE: триггер на update - увидеть старое значение? / 8 сообщений из 8, страница 1 из 1
30.01.2007, 15:11
    #34293165
DimaU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: триггер на update - увидеть старое значение?
ASE 12.0
Кто сталкивался, help!
Пишу триггер на update поля F1 таблицы Т1

авторcreate trigger tU_T1 on T1 for UPDATE as
if update (F1)

begin
declare @numrows int,
@errno int,
@errmsg varchar(255),
@ObjectName char(30),
@ObjectID DSIDENTIFIER

select @numrows = @@rowcount, @ObjectName = "", @ObjectID = 0

/* значение поля F1 ? updated ? */

select @errno = 30001, @ObjectName = "T1", @errmsg = 'ля ля ля незя изменять'


raiserror @errno @errmsg
rollback transaction

end

Можно ли в тексте триггера "увидеть" старое значение поля? как?
...
Рейтинг: 0 / 0
30.01.2007, 16:02
    #34293422
michael_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: триггер на update - увидеть старое значение?
Смотри таблицы deleted и inserted
...
Рейтинг: 0 / 0
30.01.2007, 16:24
    #34293520
DimaU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: триггер на update - увидеть старое значение?
michael_Смотри таблицы deleted и inserted
Thank.
там действительно значение обновляемого поля??
...
Рейтинг: 0 / 0
30.01.2007, 17:19
    #34293807
лень
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: триггер на update - увидеть старое значение?
DimaU michael_Смотри таблицы deleted и inserted
Thank.
там действительно значение обновляемого поля??

нет, это шутка юмора, доступный только посвященным :)
deleted - старое, inserted - новое...
...
Рейтинг: 0 / 0
30.01.2007, 19:40
    #34294179
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: триггер на update - увидеть старое значение?
DimaU пишет:

> Смотри таблицы deleted и inserted
> там действительно значение обновляемого поля??

Там находятся все измененные записи. Учти, что их обычно много
и триггер должен уметь обработать их все, не должен быть
написан так, чтобы он работал только с одной записью.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
31.01.2007, 12:47
    #34295752
DimaU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: триггер на update - увидеть старое значение?
MasterZiv
DimaU пишет:

> Смотри таблицы deleted и inserted
> там действительно значение обновляемого поля??

Там находятся все измененные записи. Учти, что их обычно много
и триггер должен уметь обработать их все, не должен быть
написан так, чтобы он работал только с одной записью.
Posted via ActualForum NNTP Server 1.3

Спасибо. Удобно Sybase сделал.
Если обновляется одна запись - все понятно - в deleted и inserted тоже одна запись ведь?
---
Как писать триггер на групповое обновление (если вдруг)?
(цель триггера - нужно поймать и запретить обновление поля F1 если F1>0)
можно пример если у кого есть.
...
Рейтинг: 0 / 0
31.01.2007, 13:09
    #34295881
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: триггер на update - увидеть старое значение?
DimaU пишет:

> Спасибо. Удобно Sybase сделал.

Ну а как же может быть по-другому ?

> Если обновляется одна запись - все понятно - в deleted и inserted тоже
> одна запись ведь?

Да.

> Как писать триггер на групповое обновление (если вдруг)?

Главное - понимать что INSERTED & DELETED - это (псевдо)таблицы,
а не записи. Техника может быть разной, в зависимости от реализуемой
функциональности. Ну например, пробег по этим таблицам курсором,
но чаще всего таблицы просто участвуют в запросах как нормальные
таблицы.

> (цель триггера - нужно поймать и запретить обновление поля F1 если F1>0)

Тут вообще не нужно INSERTED. Есть псевдо-функция UPDATE(<имя поля>)
Пишется что-то вроде того:

if UPDATE(<field-name>) ..


create trigger [owner .]trigger_name
on [owner .]table_name
for {insert , update}
as
[if update (column_name )
[{and | or} update (column_name )]...]
SQL_statements
[if update (column_name )
[{and | or} update (column_name )]...
SQL_statements ]...
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
31.01.2007, 13:11
    #34295899
Dim2000
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASE: триггер на update - увидеть старое значение?
MasterZiv wrote:

> Ну а как же может быть по-другому ?

Row-level triggers .
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE: триггер на update - увидеть старое значение? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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