Триггер на вставку нового студента
При вставке новой строки в таблицу триггеры часто используются для задания таких значений по умолчанию, которые нельзя определить при создании таблицы с помощью фразы DEFAULT. В Oracle триггер на вставку чаще всего используется для автоматического задания значений первичного ключа. В стандарте SQL 2003 для этих целей имеется специальное ключевое слово IDENTITY, но в Oracle оно не поддерживается.
Вместо этого имеется специальный объект SEQUENCE, который предназначен для формирования последовательных целых чисел (этот объект зафиксировн в стандарте SQL 2003). Для обращения к значениям последовательности в выражении SQL используются псевдостолбцы currval и nextval. Currval возвращает текущее значение. NextVal инкрементирует текущее значение и возвращает результат, при этом он становится текущим значением. Триггер на вставку берет из последовательности очередное значение и помещает его в новую строку, используя предопределенную переменную :new.
Например, создадим последовательность для формирования кодов студентов:
CREATE SEQUENCE stud_seq
Теперь создадим триггер на вставку новой строки в таблицу students:
create trigger st_keys
before insert on students
for each row
begin
select stud_seq.nextval into :new.cod_st from dual;
end;
Аналогичный триггер можно написать и на таблицу subjects, поскольку при добавлении нового предмета его код должен формироваться также автоматически. Для этих целей обычно создают еще одну последовательность, хотя, в принципе, и одна последовательность на все таблицы с суррогатными ключами обеспечит уникальность значений ключа в каждой таблице.
Дата добавления: 2015-08-26; просмотров: 821;