sql >> Databasteknik >  >> RDS >> Oracle

SQLPlus AUTO_INCREMENT Fel

Många kommer att gnälla över att detta inte är en standardfunktion i Oracle, men när det är så enkelt som två kommandon till efter ditt CREATE TABLE-kommando kan jag inte se någon bra anledning att använda snygg SQL på varje infogning. Låt oss först skapa en enkel tabell för att leka med.

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

Nu antar vi att vi vill att ID ska vara ett automatiskt inkrementfält. Först behöver vi en sekvens att ta värden från.

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

Nu kan vi använda den sekvensen i en BEFORE INSERT-utlösare 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. MySQL-återställning på MyISAM-motorn

  2. FEL:Anslutningen är i autoCommit-läge

  3. Laddar bilddata till BLOB-kolumner i Oracle

  4. Hur skickar man godtyckliga parametrar till Oracle trigger?