Oracle
 sql >> Baza danych >  >> RDS >> Oracle

SQLPlus Błąd AUTO_INCREMENT

Wielu będzie narzekać, że nie jest to standardowa funkcja w Oracle, ale kiedy jest to tak proste, jak dwa dodatkowe polecenia po poleceniu CREATE TABLE, nie widzę żadnego dobrego powodu, aby używać wyszukanego SQL przy każdym wstawieniu. Najpierw stwórzmy prostą tabelę do bawić się.

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

Teraz załóżmy, że chcemy, aby ID było polem automatycznego przyrostu. Najpierw potrzebujemy sekwencji, z której będziemy pobierać wartości.

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

Teraz możemy użyć tej sekwencji w wyzwalaczu BEFORE INSERT w tabeli.

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. Sprawdź poprawność daty w Oracle bez użycia funkcji

  2. TO_CHAR typu Oracle PL/SQL TABLE

  3. Oracle :YEAR Słowo kluczowe niepoprawne

  4. Zmień nazwę kolumny tabeli w bazie danych Oracle

  5. Jak wybrać pierwszą ciągłą grupę wierszy za pomocą Oracle SQL