| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > Помогите с триггером! |
| Автор: Гость_Albinos 16.8.2004, 17:05 |
| Как выглядит код триггера на следующую задачу: Перед выполнением команды "UPDATE TEST SET TESTDATE='23.07.2004' WHERE ..." надо заменить '23.07.2004' на TO_TIMESTAMP('23.07.2004', 'DD.MM.YYYY') Необходим лишь код, сервер 9i. |
| Автор: LSD 16.8.2004, 19:24 | ||
Ставишь триггер BEFORE UPDATE, а в нем:
|
| Автор: Гость_Albinos 16.8.2004, 22:56 |
| Эх, если бы все так просто было... Понимаешь, когда я пишу запрос - я не знаю какая дата будет там вставлена. Поэтому такой вариант работает, но не прокатит. А вот как в NEW.TESTDATE засобачить TO_TIMESTAMP(NEW.TESTDATE, 'DD.MM.YYYY') - непонятно (приведенный код не работает). Подозреваю, что оракл начинает ругаться еще когда в NEW.TESTDATE пишется строка вида 'DD.MM.YYYY' (которую он не понимает). Т.Е. до отработки триггера... |
| Автор: LSD 17.8.2004, 11:12 | ||
Чего то я не совсем понял проблему. В тригере BEFORE UPDATE можно изменить любое новое значение, это точно. У меня используются такие триггеры:
Кстати UPDATE написан не правильно т.к. умолчальный формат даты в Oracle: yyyy-MM-dd HH:mm:ss.SSS, при желании можно не писать милисекунды или время полностью. Надо писать так: UPDATE TEST SET TESTDATE='2004-07-23' WHERE ... |