Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Какой командой в триггере выполняется подтверждение (Commit) / 8 сообщений из 8, страница 1 из 1
07.07.2004, 14:38:45
    #32593496
mxms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой командой в триггере выполняется подтверждение (Commit)
Доброго времени суток!
У меня триггер:

CREATE TRIGGER TRIGG_DOPSTR FOR DOPSTR
ACTIVE AFTER INSERT POSITION 0
AS
begin
update Dopstr set Dopstr.id_dopstr = gen_id(gen_dopstr_id,1) where dopstr.id_dopstr is null;
end

Но после выполнения триггера в базе в поле id_dopstr остается null?

Что делать?

Спасибо.
...
Рейтинг: 0 / 0
07.07.2004, 14:40:41
    #32593505
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой командой в триггере выполняется подтверждение (Commit)
Транзакциями в InterBase рулит клиент.
"Изнутри" управление транзакциями не производится.
...
Рейтинг: 0 / 0
07.07.2004, 15:00:34
    #32593574
mxms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой командой в триггере выполняется подтверждение (Commit)
При добавлении записей в таблицу DOPSTR у меня срабатывает это триггер!
По умолчанию поле ID_DOPSTR содержит null!
Но почему-то при добавлении очередной записи меняются номера у всех записей, которые получили значение поля ID_DOPSTR из данного триггера!
Например: было 3 записи с значениями в поле ID_DOPSTR 1,2,3 соответственно! При добавлении 4 записи они будут иметь след. значения в поле ID_DOPSTR: 4,5,6,7 ?
В чем проблема и как её решить?
Ведь цель иметь поле с уникальными значениями!

Спасибо.
...
Рейтинг: 0 / 0
07.07.2004, 15:03:55
    #32593585
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой командой в триггере выполняется подтверждение (Commit)
по-меому нужен типа такой триггер человеку:

Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE TRIGGER FOTOS_BI FOR FOTOS 
  ACTIVE BEFORE INSERT POSITION  0  
AS 
BEGIN 
  IF (NEW.NPP IS NULL) THEN 
    NEW.NPP = GEN_ID(GEN_FOTOS_ID, 1 );
END; 
...
Рейтинг: 0 / 0
07.07.2004, 15:05:03
    #32593592
fedd
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой командой в триггере выполняется подтверждение (Commit)
before а не after, не гадать с апдейтами, попадет-непопадет - а воспользоваться таблицей NEW
...
Рейтинг: 0 / 0
07.07.2004, 15:08:15
    #32593606
doroshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой командой в триггере выполняется подтверждение (Commit)
Если цель
"иметь поле с уникальными значениями!"

То пишется такой триггер:

CREATE TRIGGER TRIGG_DOPSTR FOR DOPSTR
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.ID_DOPSTR IS NULL) THEN
NEW.ID_DOPSTR = GEN_ID(gen_dopstr_id,1);
END
...
Рейтинг: 0 / 0
07.07.2004, 15:38:43
    #32593687
mxms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой командой в триггере выполняется подтверждение (Commit)
Всё дело в том что есть программа которая заполняет определенную структуру данных! Я хочу без правки программы в некоторых таблицах добавить поля в которых были бы уникальные значения, так как при проектировании их туда не заложили!

И в чем разница триггера BEFORE или AFTER INSERT ? Почему-то все говорят и приводят примеры на BEFORE INSERT ?
Спасибо.
...
Рейтинг: 0 / 0
07.07.2004, 16:01:57
    #32593743
Alexander_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какой командой в триггере выполняется подтверждение (Commit)
before insert - триггер сработает перед добавлением записи в таблицу.
after insert - после.
Потому и надо поля заполнить ДО вставки.
Что ж тут непонятного?
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Какой командой в триггере выполняется подтверждение (Commit) / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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