Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida sobre INSERT

Olá Pessoal,

Bom dia. Uma dúvida sobre inserção de registro:

Em um primeiro momento eu havia feito inserção da seguinte forma:

   insert into curso VALUES (1,HTML,1);
   insert into curso VALUES (2,'PHP',2);
   insert into curso VALUES (3,'PostgreSQL',3);

Com uma nova sintaxe, tentei executar um novo insert, onde apresentou um erro, conforme a seguir:

   insert into curso (nome, categoria_id) VALUES ('MySQL',3);
   ERROR: duplicate key value violates unique constraint "curso_pkey"
   DETAIL: Key (id)=(2) already exists

Tentei novamente colocando o campo id, e funciona:

 insert into curso (id, nome, categoria_id) VALUES (4,'MySQL',3);

Em seguida, testei novamente sem informar o campo "id":

 insert into curso (nome, categoria_id) VALUES ('SQL Server',3);
   ERROR: duplicate key value violates unique constraint "curso_pkey"
   DETAIL: Key (id)=(3) already exists

Fiz um select para verificar os registros:

 select * from curso;

id | nome | categoria_id ----+------------------+------------------ 2 | PHP | 1 1 | HTML | 2 3 | PostgreSQL | 3 4 | MySQL | 3 (4 rows)

Como resolver isso? Creio que isso é do contador. Há como alterar este contador de "curso_id_seq"?

Obrigado.

1 resposta
solução!

Olá Pessoal,

Consegui entender o problema.

No início (o primeiro caso), eu estava fazendo os inserts já definindo os valores para o campo "id". Com isso, a sequência não era atualizada, ou seja, não era incrementada. Com a nova sintaxe do comando insert , onde não especifiquei o "id", gerou, então, o erro de chave duplicada, pois, neste caso, estava sendo utilizado o contador da sequência que ainda estava em "1". Então, consegui resolver o problema com o comando "ALTER SEQUENCE" definindo o próximo valor para o contador.