Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Erro SQLPlus AUTO_INCREMENT


Muitos vão reclamar sobre isso não ser um recurso padrão no Oracle, mas quando é tão fácil quanto mais dois comandos após o comando CREATE TABLE, não vejo nenhuma boa razão para usar SQL sofisticado em cada inserção. Primeiro, vamos criar uma tabela simples para brincar com.
SQL> CREATE TABLE test
(id NUMBER PRIMARY KEY,
name VARCHAR2(30));
Table created.

Agora vamos supor que queremos que o ID seja um campo de incremento automático. Primeiro, precisamos de uma sequência para obter valores.
SQL> CREATE SEQUENCE test_sequence
START WITH 1
INCREMENT BY 1;
Sequence created.

Agora podemos usar essa sequência em um gatilho BEFORE INSERT na tabela.
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