Nesta seção, vamos entender o funcionamento de Série PostgreSQL pseudotipo, que nos permite definir colunas de incremento automático em tabelas. E também vemos exemplos do Pseudotipo serial do PostgreSQL .
O que é o pseudotipo PostgreSQL Serial?
No PostgreSQL, temos um tipo específico de gerador de objetos de banco de dados conhecido como Serial , que é usado para crie uma sequência de números inteiros que são freqüentemente usados como Chave primária em uma mesa.
A sequência pode ser gerada com a ajuda do Pseudotipo SERIAL , enquanto criamos uma nova tabela, como podemos ver no seguinte comando:
CREATE TABLE table_name( ID SERIAL );
O PostgreSQL faz o seguinte se fornecermos o Pseudotipo SERIAL para o EU IA coluna:
- Primeiramente, o PostgreSQL criará um objeto de sequência e então estabelecerá o próximo valor criado pela sequência como o valor pré-definido da coluna específica.
- Depois disso, o PostgreSQL irá aprimorar um Restrição NOT NULL para o Coluna de ID uma vez que uma sequência sempre produz um número inteiro que é um valor não nulo .
- Por fim, o PostgreSQL fornecerá o proprietário da sequência ao Coluna ID; como saída, o objeto de sequência é removido quando a tabela ou Coluna de ID caiu.
Nota: Podemos usar ambos os comandos para especificar o pseudotipo Serial, pois os comandos abaixo são semelhantes entre si.
CREATE TABLE table_name( ID SERIAL );
CREATE SEQUENCE table_name_ID_seq; CREATE TABLE table_name ( ID integer NOT NULL DEFAULT nextval('table_name_ID_seq') ); ALTER SEQUENCE table_name_ID_seq OWNED BY table_name.ID;
O Pseudotipo serial do PostgreSQL foi classificado em três tipos, que são os seguintes:
Temos a tabela a seguir, que contém todos os Pseudotipo serial especificação que é suportada pelo PostgreSQL:
Nome | Tamanho de armazenamento | Faixa |
---|---|---|
PEQUENA SÉRIE | 2 bytes | 1 a 32767 |
SERIAL | 4 bytes | 1 a 2147483647 |
GRANDE SÉRIE | 8 bytes | 1 a 9223372036854775807 |
Sintaxe do pseudotipo PostgreSQL Serial
A sintaxe do PostgreSQL Pseudotipo serial do seguinte modo:
variable_name SERIAL
Exemplos de tipo SERIAL PostgreSQL
Vejamos diferentes exemplos para entender como o O pseudo tipo PostgreSQL Serial funciona .
Nota: Podemos definir a restrição PRIMARY KEY para a coluna SERIAL porque o tipo SERIAL não cria indiretamente um índice na coluna ou torna a coluna a coluna de chave primária.
Estamos criando uma nova tabela com a ajuda do comando CREATE e inserindo alguns valores usando o comando INSERT.
No exemplo abaixo, estamos usando o CRIAR comando para gerar um Carros mesa para o Banco de dados da organização:
modelos de aprendizado de máquina
CREATE TABLE Cars( Car_id SERIAL PRIMARY KEY, Car_name VARCHAR NOT NULL, Car_model VARCHAR NOT NULL );
Saída
O Carros a tabela foi criada com sucesso após a execução dos comandos acima, conforme mostrado na imagem abaixo:
Uma vez o Carros tabela foi gerada, podemos inserir alguns valores nela usando o comando INSERT. E podemos usar o PADRÃO palavra-chave no comando INSERT ou omitir o nome da coluna (Car_id) .
INSERT INTO Cars(Car_name, Car_model) VALUES('Porche','911 Carrera');
Saída
Após implementar o comando acima, receberemos a seguinte mensagem, e o valor foi inserido com sucesso no Carros mesa:
OU Usando o Palavra-chave PADRÃO com o nome da coluna (Car_id):
INSERT INTO Cars(Car_id, Car_name, Car_model) VALUES(DEFAULT,'Audi','A8');
Saída
Ao implementar o comando acima, receberemos a seguinte mensagem; o valor foi inserido com sucesso no Carros mesa:
Como podemos ver na imagem acima, o PostgreSQL inseriu duas linhas no Carros mesa com o ID_do_carro os valores da coluna são 1 e 2 .
Depois de criar e inserir o Carros valores da tabela, usaremos o SELECIONAR comando retorna todas as linhas do Carros mesa:
SELECT * FROM Cars;
Saída
Após implementar com sucesso o comando acima, obteremos o seguinte resultado:
Podemos usar o pg_get_serial_sequence() função para obter o nome da sequência de um SERIAL coluna em uma tabela especificada, como podemos ver na sintaxe abaixo:
pg_get_serial_sequence('table_name','column_name')
Para obter o valor atual criado pela sequência, podemos passar um nome de sequência para a função currval().
No exemplo a seguir, usamos o currval() função para retornar o valor atual produzido pelo Carros mesa Car_id_seq objeto:
SELECT currval(pg_get_serial_sequence('Cars', 'car_id'));
Saída
java convertendo inteiro em string
Após implementar o comando acima, obteremos a saída abaixo:
Podemos usar o RETORNANDO Car_id cláusula no comando INSERT se quisermos obter os valores criados pela sequência quando inserirmos uma nova linha na tabela.
O comando abaixo é usado para inserir uma nova linha no Carros tabela e retorna os registros gerados para a ID_do_carro coluna.
INSERT INTO Cars(Car_name,Car_model) VALUES('Jaguar', 'XK') RETURNING Car_id;
Saída
Ao executar o comando acima, obteremos a seguinte saída, que retorna o ID_do_carro como 3 :
Observação:
- Como entendemos acima, o gerador de sequência a operação não é segura para transações, o que implica que cada usuário obterá um valor diferente se dois bancos de dados paralelos conexões tentam obter o próximo valor de uma sequência.
- E o número de sequência desse usuário ficará ocioso e criará uma lacuna na sequência se um usuário pode reverter a transação .
Exemplo2
Vejamos mais um exemplo para aprender o Pseudotipo serial em detalhe.
Então, vamos criar outra nova tabela como Vegetais tabela com a ajuda do comando CREATE em um similar base de dados aquilo é Organização com o Veg_id coluna como o SERIAL pseudo-tipo.
CREATE TABLE Vegetables( Veggie_id SERIAL PRIMARY KEY, Veggie_name VARCHAR NOT NULL, Veggie_seasons VARCHAR NOT NULL );
Saída
O Vegetais a tabela foi criada com sucesso após a execução dos comandos acima, conforme mostrado na imagem abaixo:
Uma vez o Vegetais tabela foi gerada, inseriremos alguns valores nela usando o comando INSERT e omitiremos o Vegetais_id coluna conforme mostrado no comando abaixo:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Broccoli','Spring');
Saída
Receberemos a seguinte mensagem ao implementar o comando acima: o valor foi inserido com sucesso no Vegetais mesa.
Ou também podemos usar o Padrão palavra-chave e usa o Veggie_id coluna conforme mostrado no seguinte comando:
INSERT INTO Vegetables (Veggie_id,Veggie_seasons, Veggie_seasons) VALUES(DEFAULT, 'Sweet Potatoes','Winter');
Saída
Após executar o comando acima, receberemos a mensagem abaixo, que diz que podemos usar o Palavra-chave padrão ou o ignore o nome da coluna , obteremos uma saída semelhante:
Portanto, adicionaremos mais alguns valores ao Carros tabela com a ajuda de seguir o comando:
INSERT INTO Vegetables(Veggie_name,Veggie_seasons) VALUES('Jalapeno Peppers','Fall'), ('Cucumbers','Summer'), ('Winter Squash','Winter'), ('Snow Peas','Spring'), ('Black Radish','All seasons'), ('Pumpkin','Fall');
Saída
Após executar o comando acima, receberemos a mensagem abaixo, que mostra que o valor foi inserido com sucesso no Vegetais mesa.
Depois de criar e inserir o Vegetais valores da tabela, usaremos o SELECIONAR comando para retornar todas as linhas do Vegetais mesa:
SELECT * FROM Vegetables;
Saída
Após implementar com sucesso o comando acima, obteremos a saída abaixo:
Visão geral
No Pseudotipo serial do PostgreSQL seção, aprendemos a funcionalidade do pseudotipo serial, que é usada principalmente para criar um aumentos automáticos valor da coluna para uma tabela específica.