powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Триггеры
15 сообщений из 15, страница 1 из 1
Триггеры
    #32572962
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Существует таблица title_nakl. В этой таблице есть поля clos и data. Нужно при изменении поля clos с False на True чтобы менялась дата. Получается, что триггер на обновление сработает 2 раза, причем одно обновление вызовет другое (что я думаю не правильно). Подскажите, пожалуйста, как поступить в данной ситуации.
...
Рейтинг: 0 / 0
Триггеры
    #32572984
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос получился 2 раза. Это у меня Explorer глючит
...
Рейтинг: 0 / 0
Триггеры
    #32572986
Comil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я правильно понял (вопрос сформулирован туманно), то:

в триггере надо:

if ( (old.clos=false) and (new.clos=true) ) then new."date" = current_date;

Замечание: постарайтесь избегать в названиях таблиц, полей и проч. зарезервированных слов, таких как date. Вообще, конечно, имена могут быть любыми, но тогда не избежать гемора с повсеместным использованием кавычек. Это же замечание относится и к регистру.
...
Рейтинг: 0 / 0
Триггеры
    #32573000
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается, что триггер на обновление сработает 2 раза
Показал бы тригер то. Почему 2 раза?
...
Рейтинг: 0 / 0
Триггеры
    #32573017
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня не получается через new.data=current_date. Ничего не изменяется. Поэтому попробовал через update. И триггер получился с кучей условий. Может что-то не так?
...
Рейтинг: 0 / 0
Триггеры
    #32573038
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
е-мае
диалект базы какой? скрипт таблицы? текст самого триггера?
тут же не телепаты все...
...
Рейтинг: 0 / 0
Триггеры
    #32573074
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Диалект 3.
Скрипт:
CREATE TABLE TITLE_NAKL (
ID_TITLE INTEGER NOT NULL,
OTPR INTEGER NOT NULL,
POL INTEGER NOT NULL,
DATE_NAKL TIMESTAMP,
NUM_ZAK INTEGER,
KOL_NAIM INTEGER DEFAULT 0 NOT NULL,
TYPE_NAKL INTEGER NOT NULL,
ITOG_SUM NUMERIC(12,2) DEFAULT 0.0,
CLOS BOOLEAN DEFAULT false
);


Сам триггер:

SET SQL DIALECT 3;

SET NAMES WIN1251;


SET TERM ^ ;




CREATE TRIGGER UPD_NAKL FOR TITLE_NAKL
ACTIVE BEFORE UPDATE POSITION 0
AS
declare variable izmpart integer;
declare variable izmkol integer;
declare variable izmkod integer;
declare variable is_pol boolean;
begin
if (old.clos=true) then
exception err_del_nakl; */Сообщение, что накладная закрыта
else
begin
*/Проверка по типу накладной, является ли склад отправителем
select skl_pol from nakl_type where type_id=old.type_nakl into :is_pol;
if (is_pol=false) then */ если склад отправитель
begin
*/проверка, закрывается ли накладная
if (old.clos=false and new.clos=true) then */если да
begin
*/ изменяем остаток по каждой позиции накладной
for
select num_part, kodt, kolvo from body_nakl
where id_title=old.id_title
into :izmpart, :izmkod, :izmkol
do
update reg_part set rezerv=rezerv-:izmkol,
kolvo=kolvo-:izmkol
where num_part=:izmpart and kodt=:izmkod;
new.date_nakl=current_timestamp;
end
end
end
end
^


SET TERM ; ^
...
Рейтинг: 0 / 0
Триггеры
    #32573078
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот строчка new.data=current_timestamp ничего не изменяет
...
Рейтинг: 0 / 0
Триггеры
    #32573106
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
версию Interbase в студию
CLOS BOOLEAN DEFAULT false - текст boolean приведи
...
Рейтинг: 0 / 0
Триггеры
    #32573127
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у тебя поди IB 7.x ?
...
Рейтинг: 0 / 0
Триггеры
    #32573139
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. IB 7 - й версии
...
Рейтинг: 0 / 0
Триггеры
    #32573143
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для меня IB новинка. Может быть у меня IB какой-то обрезанный?
...
Рейтинг: 0 / 0
Триггеры
    #32573194
Фотография VF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй
Код: plaintext
new."date"=NOW
в 3 диалекте работает, если это конечно поле типа DATE, но всё же... СМЕНИ НАЗВАНИЕ ПОЛЯ!!!
...
Рейтинг: 0 / 0
Триггеры
    #32573205
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Новичеквот строчка new.data=current_timestamp ничего не изменяет

current_timestamp - время начала выполнения request'а, а не текущее

new.data = 'NOW' не пробовал ?
...
Рейтинг: 0 / 0
Триггеры
    #32573211
Роман Новичек
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поле типа TIMESTAMP. А по поводу названия поля я просто не правильно написал. В скрипте правильное имя - data_nakl
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Триггеры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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