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

SQLPlus AUTO_INCREMENT fejl

Mange vil klage over, at dette ikke er en standardfunktion i Oracle, men når det er så nemt som to kommandoer mere efter din CREATE TABLE-kommando, kan jeg ikke se nogen god grund til at bruge fancy SQL på hver indsættelse. Lad os først oprette en simpel tabel for at lege med.

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

Nu antager vi, at vi ønsker, at ID skal være et automatisk stigningsfelt. Først skal vi have en sekvens at hente værdier fra.

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

Nu kan vi bruge den sekvens i en BEFORE INSERT trigger på bordet.

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. PostgreSQL+tabelpartitionering:ineffektiv max() og min()

  2. Sammenføjning af to borde virker ikke

  3. Node er 20 gange hurtigere end .NET Core i forbindelse med Postgres

  4. Dynamisk tabelopdeling i Oracle