Помогите с триггером!

 
0
 
Oracle
ava
guest | 16.08.2004, 18:05
Как выглядит код триггера на следующую задачу:

Перед выполнением команды "UPDATE TEST SET TESTDATE='23.07.2004' WHERE ..." надо заменить '23.07.2004' на TO_TIMESTAMP('23.07.2004', 'DD.MM.YYYY')

Необходим лишь код, сервер 9i.

Comments (3)
ava
LSD | 16.08.2004, 19:24 #
Ставишь триггер BEFORE UPDATE, а в нем:
TESTDATE.NEW := TO_TIMESTAMP('23.07.2004', 'DD.MM.YYYY')
ava
guest | 16.08.2004, 22:56 #
Эх, если бы все так просто было...

Понимаешь, когда я пишу запрос - я не знаю какая дата будет там вставлена. Поэтому такой вариант работает, но не прокатит.

А вот как в NEW.TESTDATE засобачить TO_TIMESTAMP(NEW.TESTDATE, 'DD.MM.YYYY') - непонятно (приведенный код не работает).

Подозреваю, что оракл начинает ругаться еще когда в NEW.TESTDATE пишется строка вида 'DD.MM.YYYY' (которую он не понимает). Т.Е. до отработки триггера...
ava
LSD | 17.08.2004, 11:12 #
Чего то я не совсем понял проблему. В тригере BEFORE UPDATE можно изменить любое новое значение, это точно. У меня используются такие триггеры:
create or replace trigger <TRIGGER_NAME> before insert on 
<TABLE_NAME> for each row
declare
begin
:new.GUID := SYS_GUID();
end <TRIGGER_NAME>;"


Кстати UPDATE написан не правильно т.к. умолчальный формат даты в Oracle: yyyy-MM-dd HH:mm:ss.SSS, при желании можно не писать милисекунды или время полностью. Надо писать так: UPDATE TEST SET TESTDATE='2004-07-23' WHERE ...
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
  guest ava  LSD
advanced
Submit