sql >> Base de Datos >  >> RDS >> Oracle

Error SQLPlus AUTO_INCREMENTO

Muchos se quejarán de que esto no es una función estándar en Oracle, pero cuando es tan fácil como dos comandos más después de su comando CREAR TABLA, no veo ninguna buena razón para usar SQL sofisticado en cada inserción. Primero, creemos una tabla simple para jugar con.

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

Ahora supondremos que queremos que ID sea un campo de incremento automático. Primero necesitamos una secuencia para tomar valores.

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

Ahora podemos usar esa secuencia en un activador ANTES DE INSERTAR en la tabla.

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