Dúvida pgAdminIII

14 respostas
V

Gente, sou iniciante na utilização do Postgre. Estou com um problema que não sei como resolver, alguém poderia me ajudar?

O problema é o seguinte: Criei a tabela como postei (item1) abaixo e depois cliquei no botão do postgre para executar consultas SQL e digitei o comando como postei (item2). E dá o seguinte erro que postei(item3), não sei o que faço para conseguir inserir.

postei (item1)

CREATE TABLE "Cadastro"
(
  "ID_Cadastro" integer NOT NULL,
  "Nome" text NOT NULL
)

postei (item2)

INSERT INTO VALUES ( "1", Marcela )

postei(item3)

Muito obrigada pessoal,

14 Respostas

iogui

Opa,

Faltou o nome da tabela:

INSERT INTO Cadastro VALUES ( 1, 'Marcela' )

Outra coisa, valores numericos não precisam de aspas e valores de texto (text) tem estar com aspas simples.
Obs.: Seria melhor declarar o campo nome como character varying e não text que é pra campos que vão receber muito texto, tipo observação ou detalhes.

[]s

iogui

Sugiro que vc dê uma estudada em sql:

http://www.w3schools.com/sql/default.asp
http://www.criarweb.com/sql/

V

Oi iogui, muito obrigada pelas dicas. Consertei as coisas conforme vc me disse. Mas, agora está acusando que a relação “cadastro já existe”.
Copiei a instrução toda como aparece lá no Postgre, pois não sei se no geral tem algo errado.

Ficou assim:

-- Table: "Cadastro"

-- DROP TABLE "Cadastro";

CREATE TABLE "Cadastro"
(
  "ID_Cadastro" integer NOT NULL,
  "Nome" character varying NOT NULL
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "Cadastro" OWNER TO postgres;
INSERT INTO Cadastro VALUES ( 1, 'Marcela' )

Erro:

Muito obrigada

V

Puxa vida, agora não sei onde está o erro. Pô não tem que mencionar a tabela que tá querendo inserir?

Então porque está dizendo que: relação “cadastro” já existe ??? Pela mensagem que aparece, dá a entender que estou querendo criar outra tabela, mas não estou fazendo isso com o comando que digitei. :shock:

Muito Obrigada

iogui

vick01:
Puxa vida, agora não sei onde está o erro. Pô não tem que mencionar a tabela que tá querendo inserir?

Então porque está dizendo que: relação “cadastro” já existe ??? Pela mensagem que aparece, dá a entender que estou querendo criar outra tabela, mas não estou fazendo isso com o comando que digitei. :shock:

Muito Obrigada

Por que vc está rodando o script de criação da tabela sendo que ela já existe.
Se for recriar a tabela primeiro remova ela com o comando drop que está comentado aí no seu script:

DROP TABLE "Cadastro";

Comentários no postgree é com “–”.

[]s

V

Oi iogui, obrigada pela nova dica, exclui o comentário (–) do comando DROP, mas ainda não está rodando.

Agora a mensagem é de que a tabela “cadastro não existe”. (coloquei o código e o erro abaixo)

Puxa vida, se coloco o comando DROP, diz que não existe. E se tiro o comando DROP diz que já existe.

Eu estou inserindo o DROP no local certo???

Já tentei apagar todo o comando de crianção da tab e coloquei só deixei o INSERT INTO, mas não funcionou também :cry:
código sql

-- Table: "Cadastro"

DROP TABLE "Cadastro";

CREATE TABLE "Cadastro"
(
  "ID_Cadastro" integer NOT NULL,
  "Nome" character varying NOT NULL
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "Cadastro" OWNER TO postgres;

INSERT INTO Cadastro VALUES ( 1, 'Marcela' )

Erro do comando

Muito obrigada,

V

Tentei também dar DROP na tabela depois da CREATE, assim:

-- Table: "Cadastro"

CREATE TABLE "Cadastro"
(
  "ID_Cadastro" integer NOT NULL,
  "Nome" character varying NOT NULL
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "Cadastro" OWNER TO postgres;

DROP TABLE "Cadastro";

INSERT INTO Cadastro VALUES ( 1, 'Marcela' )

mas ai diz que a relação já existe :shock:

Muito obrigada,

iogui

vick01:
Tentei também dar DROP na tabela depois da CREATE, assim:

-- Table: "Cadastro"

CREATE TABLE "Cadastro"
(
  "ID_Cadastro" integer NOT NULL,
  "Nome" character varying NOT NULL
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "Cadastro" OWNER TO postgres;

DROP TABLE "Cadastro";

INSERT INTO Cadastro VALUES ( 1, 'Marcela' )

mas ai diz que a relação já existe :shock:

Muito obrigada,

vick01,

Vamos pensar de forma lógica. O drop remove a tabela, certo?
Se você rodar ele depois de um comando de CREATE, qual a utilidade disto? Vai criar a tabela e imediatamente depois remover???

Ok, vamos com calma. Não rode este teu script tudo junto.

Rode comando por comando. Saboreie o que está acontecendo. Analise…

Agora vamos tentar novamente, mas vamos usar a estratégia de dividir para conquista, ok?

Selecione apenas a linha do comando de drop e clique no botão de executar a consulta da tela de query do pgAdmin.
Veja o que aconteceu. Leia o que veio no console. De um F5 no pgAdmin e veja se a tabela sumiu.
Se tudo foi bem até aí, rode o próximo comando. Selecione as linhas de create até o “;” e rode somente ele.
Veja se deu certo, se não deu msg de erro.
F5 no pgAdmin de novo pra ver se a tabela apareceu.
Se chegamos até aí, tenho certeza que seu insert vai funcionar. Se não funcionar, aí sim poste o erro aqui que damos uma ajuda, ok?

V

Puxa vida Iogui, muito obrigada pela atenção a dúvida. Fiz tudo direitinho como você falou, mas só funcionou nos passos e, apartir do não funciona.

1º Passo - F5 apenas em
DROP TABLE "Cadastro";
- Consulta executada com sucesso sem resultados em 70 ms. - Até aí OK 2º Passo - F5 apenas em
CREATE TABLE "Cadastro"
(
  "ID_Cadastro" integer NOT NULL,
  "Nome" character varying NOT NULL
)
WITH (
  OIDS=FALSE
);
-Consulta executada com sucesso sem resultados em 70 ms. - Até aí OK 3º Passo - F5 em TUDO
-- Table: "Cadastro"

DROP TABLE "Cadastro";

CREATE TABLE "Cadastro"
(
  "ID_Cadastro" integer NOT NULL,
  "Nome" character varying NOT NULL
)
WITH (
  OIDS=FALSE
);
ALTER TABLE "Cadastro" OWNER TO postgres;
INSERT INTO Cadastro VALUES ( 1, 'Marcela' )

E apresenta o seguinte erro:

ERRO: relação "cadastro" não existe
LINE 14: INSERT INTO Cadastro VALUES ( 1, 'Marcela' )
^

********** Erro **********

ERRO: relação "cadastro" não existe
SQL state: 42P01
Caracter: 222

Puxa vida já testei uma porção de coisa. Ainda continuo fazendo alguma coisa de errado ?????
Muito obrigada

iogui

O 3º passo está errado. Não dê F5 em tudo, apenas na linha de INSERT.
Se vc já dropou a tabela e já recriou, pra que você vai fazer isto de novo?
Não rode o script todo. Rode comando por comando.
Dividir para conquistar, lembra? :wink:

V

Muito obrigada Iogui, Agora funcionou. :smiley: Tive que incluir o nome da tabela entre àspas duplas assim:

INSERT INTO "Cadastro" VALUES ( 3, 'Marcela' )

Agora estou com um outro problema:
Consegui incluir vários cadastros dando F5 em CADA UM, tem como incluir os cadastros selecionando todos de uma vez e apertar F5 só uma vez? Tentei assim: INSERT INTO "Cadastro" VALUES ( 3, 'Marcela' ) INSERT INTO "Cadastro" VALUES ( 5, 'Maria' ) INSERT INTO "Cadastro" VALUES ( 7, 'Marcelina' ) INSERT INTO "Cadastro" VALUES ( 9, 'Jones' )

Mas está dando o seguinte erro de sintaxe.


ERRO: erro de sintaxe em ou próximo a "INSERT"
LINE 2: INSERT INTO “Cadastro” VALUES ( 5, ‘Maria’ )
^

********** Erro **********

ERRO: erro de sintaxe em ou próximo a "INSERT"
SQL state: 42601
Caracter: 48

Muito obrigada mesmo,

iogui

vick01:
Muito obrigada Iogui, Agora funcionou. :smiley: Tive que incluir o nome da tabela entre àspas duplas assim:

INSERT INTO "Cadastro" VALUES ( 3, 'Marcela' )

Agora estou com um outro problema:
Consegui incluir vários cadastros dando F5 em CADA UM, tem como incluir os cadastros selecionando todos de uma vez e apertar F5 só uma vez? Tentei assim: INSERT INTO "Cadastro" VALUES ( 3, 'Marcela' ) INSERT INTO "Cadastro" VALUES ( 5, 'Maria' ) INSERT INTO "Cadastro" VALUES ( 7, 'Marcelina' ) INSERT INTO "Cadastro" VALUES ( 9, 'Jones' )

Mas está dando o seguinte erro de sintaxe.


ERRO: erro de sintaxe em ou próximo a "INSERT"
LINE 2: INSERT INTO “Cadastro” VALUES ( 5, ‘Maria’ )
^

********** Erro **********

ERRO: erro de sintaxe em ou próximo a "INSERT"
SQL state: 42601
Caracter: 48

Muito obrigada mesmo,

Tem, coloque um “;” no final de cada linha de insert e rode todos inserts de uma vez.
Eu só falei pra vc rodar um comando por vez pois assim fica mais fácil pra encontrar o erro, isolar a causa.
Uma vez sabendo que todos os comandos estejam funcionando, você pode colocar todos no mesmo script pra rodar tudo de uma só vez, contanto que tenha sentido fazer isto e esteja numa ordem lógica.
Geralmente, comandos de DDL (Data Definition Language) como create table ou drop vc vai querer usar menos.
Uma vez criada a tabela, vc não vai ter que ficar recriando ela toda hora. Só se tiver que mudar algo na sua definição.
Por outro lado, vc vai estar sempre inserindo e fazendo selects e updates.
Desta forma sugiro que vc guarde devidamente os seus DDL em lugar seguro pro caso de precisar deles novamente e se concentre nos insert, select e update.

[]s

V

Muito obrigada mesmo Iogui, funcionou também.

Que Deus te abençoe rica e abundantemente.

Obrigada, :smiley:

iogui

vick01:
Muito obrigada mesmo Iogui, funcionou também.

Que Deus te abençoe rica e abundantemente.

Obrigada, :smiley:

Deus abençoe seu aprendizado vick01!
Não esqueça de dar uma olhada nos links que te passei. Tenho certeza que serão muito úteis! :wink:

Criado 29 de janeiro de 2011
Ultima resposta 30 de jan. de 2011
Respostas 14
Participantes 2