sql >> Database >  >> RDS >> Oracle

12c Kolom automatisch invullen met reekswaarde

In de blogpost van gisteren schreef ik over het maken van een tabel met een IDENTITY-waarde. Maar de nieuwe functie van Oracle 12c die ik beter vind, is dat een reeks de nummergenerator kan zijn voor de standaardwaarde van een kolom. Bekijk dit voorbeeld om te zien wat ik bedoel:

SQL> create sequence test_seq;
Sequence created.
SQL> create table test_tab (id number default test_seq.NEXTVAL, val varchar2(20));
Table created.

Zoals je kunt zien, heeft de ID-kolom van mijn testtabel een DEFAULT-clausule die de NEXTVAL gebruikt van de reeks die ik heb gemaakt. Laten we nu wat gegevens in de tabel invoegen.

SQL> insert into test_tab (val) values ('first row');
1 row created.
SQL> insert into test_tab (val) values ('second row');
1 row created.
SQL> commit;
Commit complete.
SQL> select * from test_tab;
ID VAL
---------- --------------------
1 first row
2 second row

Zoals u kunt zien, werd de Oracle-reeks gebruikt om de waarden te vullen. Op het eerste gezicht zou dit het leven van de datamodelleur gemakkelijker maken, omdat men niet de traditionele route van het coderen van een trigger hoeft te volgen om de NEXTVAL te genereren en deze waarde aan de kolom toe te wijzen. Dit automatisch invullen van de kolomwaarde met de reeks werkt echter alleen als u geen waarde opgeeft, als u deze standaard laat. Als u de waarde expliciet vermeldt, zal deze methode de reeks niet gebruiken. Een trigger, indien correct gecodeerd, zou het gebruik van de volgende waarde van de reeks voor de kolom forceren.


  1. Hoe strings in SQL Server te ontsnappen met behulp van PHP?

  2. Laat je niet voor de gek houden door de streams pool

  3. Hoe wijzig ik de standaardwaarde van de kolom in PostgreSQL?

  4. Escape-functie voor reguliere expressie of LIKE-patronen