Mnozí budou namítat, že to není standardní funkce v Oracle, ale když je to tak snadné, jako dva další příkazy po příkazu CREATE TABLE, nevidím žádný dobrý důvod, proč používat efektní SQL na každé vložení. Nejprve vytvořte jednoduchou tabulku. hrát s.
SQL> CREATE TABLE test
(id NUMBER PRIMARY KEY,
name VARCHAR2(30));
Table created.
Nyní budeme předpokládat, že chceme, aby ID bylo polem automatického přírůstku. Nejprve potřebujeme sekvenci, ze které budeme získávat hodnoty.
SQL> CREATE SEQUENCE test_sequence
START WITH 1
INCREMENT BY 1;
Sequence created.
Nyní můžeme tuto sekvenci použít ve spouštěči BEFORE INSERT na stole.
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