Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Триггер и sysdate


Автор: jsa 19.1.2006, 06:37
Hi All!

есть проблема:
для таблицы на before insert из тригера идет заполенние поля date
Код

:new.stdt:=sysdate

почему то иногда появляются записи в таблице такие что
Код

stdt = trunc(stdt)
(на переход суток не сваливаю, так как за одно число достаточно большое количество записей, вставляемых с переодичностью как минимум несколько секунд)
и от этого все неправильно работает smile
в чем может быть проблема? даже ума не приложу smile

ЗЫЖ Oracle 9i R2

Автор: LSD 19.1.2006, 18:08
1. такая проблема со всеми таблицами в БД, или только с одной? и случайно insert не из job-а выполняется? и вообще ситуация воспроизводимая?
2. попробуй создать простенькую табличку с одним столбцом date, сделать его первичным ключем и потестировать на ней
3. замени в триггере
Код
:new.stdt:=sysdate

на
Код
select sysdate sysdate into :new.stdt from dual;

4. вставь проверку stdt = trunc(sysdate, 'DD') в триггер, и пиши в лог или выбрасываю исключение (это что бы проверить что дело не в функции sysdate или наоборот в ней.

Автор: jsa 20.1.2006, 09:52
не, insert не из джоба, инсерт идет из продуры, вызваемой из перла
в этой же таблице сдалал новое поле date,
заполняю его в триггере
Код
select sysdate sysdate into :new.field from dual;

без разницы
что
Код

:new.stdt:=sysdate;

что
Код

select sysdate sysdate into :new.field from dual;

работает одинково, т.е. как небыло состовляющей времени, так и нет

ЗЫЖ остальное буду пробовать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)