Oracle
 sql >> база данни >  >> RDS >> Oracle

SQLPlus AUTO_INCREMENT Грешка

Мнозина ще възразят, че това не е стандартна функция в Oracle, но когато е толкова лесно, колкото още две команди след вашата команда CREATE TABLE, не виждам основателна причина да използвам фантастичен SQL при всяко вмъкване. Първо нека създадем проста таблица, за да играйте с.

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

Сега ще приемем, че искаме ID да бъде поле за автоматично нарастване. Първо имаме нужда от последователност, от която да вземем стойности.

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

Сега можем да използваме тази последователност в тригер BEFORE INSERT на таблицата.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. последователността не съществува ORA-02289

  2. JDBC:връщане на множество набори от резултати чрез едно извикване на база данни - не работи за Oracle

  3. 4 начина за промяна на часовата зона в Oracle

  4. Как да върна промените в моята база данни след ангажимент?

  5. DateTime on Where Clause Oracle