SQL SEQUENCE en NEXTVAL





SQL > Geavanceerde SQL > SEQUENCE en NEXTVAL

Oracle gebruikt het concept van SEQUENCE om numerieke primaire sleutelwaarden te genereren wanneer we rijen gegevens aan een tabel toevoegen. Terwijl de bevolking van numerieke primaire sleutels voor MySQL en SQL Server is gekoppeld aan individuele tabellen, wordt in Oracle de SEQUENCE-constructie apart gemaakt en is deze niet gekoppeld aan een individuele tabel.

Syntaxis

De syntaxis voor het maken van een sequentie in Oracle is:

CREATE SEQUENCE SEQUENCE_NAME
[START WITH {Initial_Value}]
[INCREMENT BY {interval}];

{Initial_Value} is de startwaarde van de sequentie, en {interval} is het interval tussen opeenvolgende sequentienummers. Zowel [START WITH] als [INCREMENT BY] zijn optionele velden. Als ze niet worden gespecificeerd, zijn de standaardwaarden voor {Initial_Value} en {interval} beide 1.

Voorbeeld

Laten we aannemen dat we een tabel hebben met de volgende structuur:

Tabel USER_TABLE
 Kolom Naam  Gegevens Type 
 Userid  integer 
 Last_Name  varchar(50) 
 First_Name  varchar(50) 

en dat we de volgende sequentie willen gebruiken om de gebruikers-ID te genereren:

CREATE SEQUENCE SEQ_USER START WITH 5 INCREMENT BY 5;

We geven aan dat we de sequentie en de NEXTVAL-functie willen gebruiken in de INSERT INTO-statements in de volgende volgorde:

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Washington', 'George');

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Jefferson', 'Thomas');

Nu heeft de tabel de volgende twee rijen:

Tabel USER_TABLE
 Userid  Last_Name  First_Name 
 5  Washington  George 
 10  Jefferson  Thomas 

Het is de moeite waard op te merken dat een sequentie onafhankelijk is van een tabel. Met andere woorden, een sequentie kan worden gebruikt om primaire sleutelwaarden te genereren voor meerdere tabellen, en de sequentie gaat door, zelfs als deze wordt toegepast op een andere tabel. Laten we dus bijvoorbeeld zeggen dat we een tweede tabel hebben, Tabel NEW_USERS, die dezelfde structuur heeft als tabel USER_TABLE, en we geven het volgende SQL-commando uit na het uitvoeren van de twee bovenstaande SQL-commando's:

INSERT INTO NEW_USER VALUES (SEQ_USER.NEXTVAL, 'Adams', 'John');

Tabel NEW_USER krijgt de volgende rij:

Tabel NEW_USER
 Userid  Last_Name  First_Name 
 15  Adams  John 

Userid is 15 omdat dat de volgende waarde is na 10.

SQL NULL >>

Deze pagina is voor het laatst bijgewerkt op 26-12-2023



Copyright © 2024   1keydata.com   Alle rechten voorbehouden