SQL SEQUENCE e NEXTVAL




SQL > Linguagem SQL avançada > SEQUENCE e NEXTVAL

A Oracle utiliza o conceito de SEQUENCE (sequência) para criar valores numéricos de chave primária à medida que adicionamos linhas de dados a uma tabela. Enquanto a população de chave primária numérica para o MySQL e o SQL Server está vinculada a tabelas individuais, no Oracle a construção da SEQUENCE é criada separadamente e não está vinculada a uma tabela específica.

Sintaxe

A sintaxe para criar uma sequência no Oracle é a seguinte:

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

{Initial_Value} é o valor inicial da sequência, e {interval} é o intervalo entre números de sequência consecutivos. Tanto [START WITH] quanto [INCREMENT BY] são campos opcionais. Se não forem especificados, o valor padrão para {Initial_Value} e {interval} é ambos 1.

Exemplo

Suponha que tenhamos uma tabela com a seguinte estrutura:

Tabela USER_TABLE
 Nome da Coluna  Tipo de Dados 
 Userid  integer 
 Last_Name  varchar(50) 
 First_Name  varchar(50) 

e que desejamos usar a seguinte sequência para gerar o userid:

CREATE SEQUENCE SEQ_USER START WITH 5 INCREMENT BY 5;

Especificamos que queremos usar a sequência e a função NEXTVAL nas declarações INSERT INTO na seguinte ordem:

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

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

Agora a tabela tem as seguintes duas linhas:

Tabela USER_TABLE
 Userid  Last_Name  First_Name 
 5  Washington  George 
 10  Jefferson  Thomas 

Vale ressaltar que uma sequência é independente de uma tabela. Em outras palavras, uma sequência pode ser usada para gerar valores de chave primária para várias tabelas, e a sequência continua mesmo que seja aplicada a uma tabela diferente. Então, digamos, por exemplo, que tenhamos uma segunda tabela, Table NEW_USERS, que tenha a mesma estrutura que a tabela USER_TABLE, e emitimos o seguinte comando SQL após executar os dois comandos SQL acima:

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

A tabela NEW_USER terá a seguinte linha:

Tabela NEW_USER
 Userid  Last_Name  First_Name 
 15  Adams  John 

O Userid é 15 porque esse é o próximo valor após 10.

SQL NULL >>

Esta página foi atualizada pela última vez em 26/12/2023



Copyright © 2024   1keydata.com   Todos os direitos reservados.