Oracle
 sql >> Database >  >> RDS >> Oracle

Errore AUTO_INCREMENT SQLPlus

Molti si lamenteranno del fatto che questa non sia una funzionalità standard in Oracle, ma quando è facile come altri due comandi dopo il comando CREATE TABLE non riesco a vedere alcun buon motivo per usare SQL di fantasia su ogni inserto. Per prima cosa creiamo una tabella semplice per gioca con.

SQL> CREATE TABLE test
(id NUMBER PRIMARY KEY,
name VARCHAR2(30));
Table created.

Ora assumiamo che vogliamo che l'ID sia un campo di incremento automatico. Per prima cosa abbiamo bisogno di una sequenza da cui prendere i valori.

SQL> CREATE SEQUENCE test_sequence
START WITH 1
INCREMENT BY 1;
Sequence created.

Ora possiamo usare quella sequenza in un trigger BEFORE INSERT sul tavolo.

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