sql >> Database >  >> RDS >> Oracle

SQLPlus AUTO_INCREMENT Fout

Velen zullen klagen dat dit geen standaardfunctie is in Oracle, maar als het zo eenvoudig is als nog twee commando's na je CREATE TABLE-commando, zie ik geen goede reden om fancy SQL te gebruiken op elke insert. Laten we eerst een eenvoudige tabel maken om spelen met.

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

Nu gaan we ervan uit dat we willen dat ID een automatisch incrementeel veld is. Eerst hebben we een reeks nodig om waarden uit te halen.

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

Nu kunnen we die reeks gebruiken in een BEFORE INSERT-trigger op de tafel.

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


  1. Zoek telefoonnummers in de database en negeer speciale tekens

  2. Attributen extraheren uit XML-velden in SQL Server 2008-tabel

  3. Inleiding tot PostgreSQL

  4. Vastgelopen in fout 2 met mysql met XAMPP