Como utilizar o AUTOINCREMENT com chave estrangeira

SQL

27/09/2018

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

Curtidas 0

Melhor post

Marcio Souza

Marcio Souza

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.
GOSTEI 3

Mais Respostas

Marcio Souza

Marcio Souza

27/09/2018

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

Leonan

27/09/2018

Muito obrigado! Ajudou :-)
GOSTEI 0
POSTAR