powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер на Insert
9 сообщений из 9, страница 1 из 1
Триггер на Insert
    #32159789
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К концу дня тупость какая-то. Подскажите короткий триггер.
При Insert в таблицу во вставляемой строке заменить одно поле на специальное значение.
...
Рейтинг: 0 / 0
Триггер на Insert
    #32159802
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create or replace trigger new_reason  
before insert on stock_correction_reason  
for each row  
begin  
     select seq_reason_tid.nextval into :new.reason_tid from dual;  
end;

insert into stock_correction_reason values(null,'test', 3 );


null заменится на значение из последовательности.
...
Рейтинг: 0 / 0
Триггер на Insert
    #32159824
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Данке шон, как у вас по-местному.
А то тупость какая-то - на все ошибки натыкаться.
лепил в ".nextval into :new.имя_таблицы.имя_поля" ,
after, в теле триггера запрещенные DML тыкал, ...
...
Рейтинг: 0 / 0
Триггер на Insert
    #32159852
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.DBA!
А в Oracle есть такое, чтобы с наступлением нового дня некий счетчик
обнулялся.
Конечно можно табличку с дата положить в БД, а потом когда нужен очередной номер вызывать процедурку, которая сравнивала бы sysdate с той
датой и когда отличие, то обнуляла бы счетчик и дату меняла. Но ...
...
Рейтинг: 0 / 0
Триггер на Insert
    #32159894
.dba
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>А в Oracle есть такое, чтобы с наступлением нового дня некий счетчик
>обнулялся.

не совсем понял что ты хочешь сделать, но мне кажется, что можно сделать job, который будет каждую ночь дропать и создавать заново последовательность. Хотя это не очень надежно, но можно ввести дополнительные проверки.
...
Рейтинг: 0 / 0
Триггер на Insert
    #32159911
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>не совсем понял что ты хочешь сделать, но мне кажется, что можно сделать >job, который будет каждую ночь дропать и создавать заново >последовательность. Хотя это не очень надежно, но можно ввести >дополнительные проверки

А еще проще.
Так: пропуска на территорию из инфосистемы выдаются и каждый день номерация новая.
А такое вот:
create table pass.pass_counter
(
curr_n_pass number,
curr_date date
)
и функция get_num_pass, которая каждый раз проверяет sysdate, сравнивая
с curr_date и как только отличие, то заменяет curr_date=sysdate и curr_n_pass=0 в pass.pass_counter. И дальше тащит номер и заменяет curr_n_pass до новых суток. Но это грубо.
Что-то же элегантное интеллектуальное должно быть! :-)
...
Рейтинг: 0 / 0
Триггер на Insert
    #32160082
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделать что-то типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
     ....
     select seq_reason_tid.nextval, last_value, time_stamp-trunc(sysdate) 
         into :new.reason_tid, pLastVal, pYesterday from time_mark;  
     if pYesterday< 0  then
        update time_mark set last_value=:new.reason_tid, time_stamp=sysdate;
        :new.reason_tid := :new.reason_tid - pLastVal;
     end if;
     ....
end;

Надеюсь идея понятна? Хотя, я бы вынес сие в autonomous transaction, или придумал бы, как защититься от параллельного сброса.
Ну или в полночь запускать job, который будет делать запись в таблицу.
Тогда вообще, в лоб выбираешь seq_reason_tid.nextval-last_value и радуешься.
...
Рейтинг: 0 / 0
Триггер на Insert
    #32160275
Alexandr Plus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лаб диен VSKV! (так вроде у вас говорят)

Первое - это вариация того, что описано - функция или триггер, который
присваивает номера и проверяет наступило ли завтра, меняя при наступлении
контесты реперных точек (начал отсчета, фиксации даты).


>Ну или в полночь запускать job, который будет делать запись в таблицу.

Это вариация того, что предлагал .DBA - job, дропающий и создающий
последовательность.

Please, если не в лом, не можешь ли нарисовать процедурку с помощью DBMS_JOB, создающую job, который запускался бы в полночь каждые сутки, а то Enterprise Manager-а может не быть при дистрибуциях. Не пробовал ни разу
без Enterprise Manager.
...
Рейтинг: 0 / 0
Триггер на Insert
    #32161248
vskv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лень поискать по форуму ключевое слово job_submit?\r
\r
Вот здесь\r
/topic/29393, к примеру, обсуждали как джоб запускать из триггера. В остальных девяти нитках занимались troubleshooting\'ом...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Триггер на Insert
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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