Мнозина ще възразят, че това не е стандартна функция в Oracle, но когато е толкова лесно, колкото още две команди след вашата команда CREATE TABLE, не виждам основателна причина да използвам фантастичен SQL при всяко вмъкване. Първо нека създадем проста таблица, за да играйте с.
SQL> CREATE TABLE test
(id NUMBER PRIMARY KEY,
name VARCHAR2(30));
Table created.
Сега ще приемем, че искаме ID да бъде поле за автоматично нарастване. Първо имаме нужда от последователност, от която да вземем стойности.
SQL> CREATE SEQUENCE test_sequence
START WITH 1
INCREMENT BY 1;
Sequence created.
Сега можем да използваме тази последователност в тригер BEFORE INSERT на таблицата.
CREATE OR REPLACE TRIGGER test_trigger
BEFORE INSERT
ON test
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
SELECT test_sequence.nextval INTO :NEW.ID FROM dual;
END;
/
SQL> INSERT INTO test (name) VALUES ('Jon');
1 row created.
SQL> INSERT INTO test (name) VALUES (’Bork’);
1 row created.
SQL> INSERT INTO test (name) VALUES (’Matt’);
1 row created.
SQL> SELECT * FROM test;
ID NAME
———- ——————————
1 Jon
2 Bork
3 Matt