Fórum Como utilizar o AUTOINCREMENT com chave estrangeira #597449

27/09/2018

0

SQL

Estou com dúvidas referente a criação de chaves primarias AUTOINCREMENT, no curso de SQL com postgres não foi abordado este assunto o que me gerou dúvidas.

Tenho o seguinte esquema

TABELA pessoa
Colunas Id,nome, cpf,nascimento

A coluna ID, preciso que seja preenchida automaticamente pelo banco seguindo uma sequencia.

Primeira tentativa
Criei a tabelas com as colunas

CREATE TABLE pessoa
( id bigint NOT NULL primary key, nome varchar(20), cpf varchar(11), nascimento date
)

Criei a sequencia
CREATE SEQUENCE pessoa_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;

Bom agora que inserir os valores e é aqui que estou com problemas, como fazer o insert corretamente?

Tentativa:
INSERT INTO pessoa (id,nome,cpf,nascimento)
VALUES (default,''''''''Leonan Machado'''''''',''''''''12345678910'''''''',''''''''01-03-1991'''''''')

Erro: ERROR: null value in column "id" violates not-null constraint
SQL state: 23502
Detail: Failing row contains (null, Leonan Machado, 12345678910, 1991-03-01)


Onde estou errando?
Leonan

Leonan

Responder

Post mais votado

27/09/2018

Olá Leonan, para auto incremento no PostgreSQL você pode tentar assim:

//cria a tabela
CREATE TABLE pessoa (
    id serial primary key, 
    nome varchar(20), 
    cpf varchar(11), 
    nascimento date
)
//faz o insert
INSERT INTO pessoa (nome,cpf,nascimento) VALUES (,"Leonan Machado","12345678910","01-03-1991"')


Como você está usando auto incremento, quem gerencia as chaves é o banco então não use o id no insert, é o banco que controla isso.

Marcio Souza

Marcio Souza
Responder

Gostei + 3

Mais Posts

27/09/2018

Marcio Souza

Atualizando o insert, ficou alguns erros na postagem anterior
INSERT INTO pessoa (nome, cpf, nascimento) VALUES ("Leonan Machado", "12345678910", "01-03-1991")
Responder

Gostei + 0

28/09/2018

Leonan

Muito obrigado! Ajudou :-)
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar