Как создать триггер для определения времени изменения данных Oracle. Вы можете каждый раз генерировать данные средствами PHP, Python, но триггер сделает всё автоматический. У триггеров есть интересное качество - их можно отключать. Как создать триггер в оракле. Тут не сложно. Вам нужно пролезть в свою схему и вставить код SQL: CREATE TRIGGER...END. Содержимое триггера может быть любым. Их часто используют для увеличения ID (автоинкремента) и для определения времени изменения записи.
/*создание триггера через консоль SQL*/
CREATE TRIGGER схема.таблица_название_триггера
BEFORE INSERT OR UPDATE ON схема.таблица
FOR EACH ROW
BEGIN
:new.changed := sysdate;
END;
/*через редактор*/
TRIGGER схема.название_триггера
BEFORE INSERT OR UPDATE ON схема.таблица
FOR EACH ROW
BEGIN
/*новое значение.changed = системному времени*/
:new.changed := sysdate;
END;
/*готовый пример*/
TRIGGER scheme1.table_trigger_changed
BEFORE INSERT OR UPDATE ON схема.таблица
FOR EACH ROW
BEGIN
:new.changed := sysdate;
END;
Если вы делаете триггер для увеличения ID на единицу, то в настройках выделите галочкой настройку INSERT. INSERT - эта настройка включает триггер после вставки записи. При изменении записи триггер не сработает. Это важно. Изменений может быть сотня, но создание уникальной записи выполняется чаще всего один раз. Я воспользовался последовательностью SEQUENCES (AUTONUMBER) для создания автоинкремента. О том как содать последовательность читайте в статье: Как создать последовательность SEQUENCES (AUTONUMBER) в Oracle
/*создание триггера через консоль SQL*/
create or replace TRIGGER схема.название_триггера
before insert on схема.таблица
for each row
begin
if :new.id is null then
/*
SEQ_ID - sequences последовательность для автонумерации
nextval - следующее значение. происходит прибавление 1
id - столбец в таблице
*/
select SEQ_ID.nextval into :new.id from dual;
end if;
end;
/*готовый пример*/
create or replace TRIGGER scheme1.name_trigger1
before insert on scheme1.table1
for each row
begin
if :new.id is null then
select SEQ_ID.nextval into :new.id from dual;
end if;
end;