голосование
PHP
jQuery
Firebird
BASH
HTML
Ресурсы
GIT
SEO
Oracle
Python
Хостинг
Программы
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Как создать триггер Oracle

Как создать триггер для определения времени изменения данных 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;
просмотры: 128, уровень: лёгкий уровень, рейтинг: 0, дата: 2017-12-05 08:56:37
проголосовать:

Комментарии:






поиск
сайты друзей
банеры
сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://ping-admin.ru/index_5659.html мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://www.2domains.ru домен RU домен RU всего за 99 рублей