
Erro Na Criação De Tabela
#1
Posted 09/09/2009, 08:54
Estou inserindo esse código:
CREATE TABLE iqa (
ident_ponto int(10) NOT NULL default '0',
ident_projeto int(10) NOT NULL default '0',
periodo int(8) NOT NULL default '0',
profundidade float NOT NULL default '0',
pos_col_agua enum('superficie','meio-superficie','meio','meio-fundo','fundo')default NULL,
hora varchar(10)default NULL,
dbo float default NULL,
dqo float default NULL,
oxi_dis float default NULL,
ph float default NULL,
turbidez float default NULL,
temperatura float default NULL,
col_fec float default NULL,
col_total float default NULL,
res_total float default NULL,
ms_total float default NULL,
msi float default NULL,
mso float default NULL,
nit_total float default NULL,
fos_total float default NULL,
fos_total_dis float default NULL,
alcalinidade float default NULL,
dureza float default NULL,
condutividade float default NULL,
pot_red float default NULL,
cod float default NULL,
cid float default NULL,
cab_total float default NULL,
cab_par float default NULL,
salinidade float default NULL,
clorofila float default NULL,
fluoreto float default NULL,
cloreto float default NULL,
nitrito float default NULL,
brometo float default NULL,
nitrato float default NULL,
ortofosfato float default NULL,
sulfato float default NULL,
litio float default NULL,
sodio float default NULL,
amonio float default NULL,
potassio float default NULL,
magnesio float default NULL,
calcio float default NULL,
tds float default NULL,
secchi float default NULL,
PRIMARY KEY (ident_ponto,ident_projeto,periodo,profundidade)
);
Mas me retorna essa mensagem de erro:
ERRO: erro de sintaxe em ou próximo a "("
LINE 2: ident_ponto int(11) NOT NULL default '0',
O que está acontecendo de errado? Aparentemente o meu create table está correto, não?
#2
Posted 09/09/2009, 09:32
Este create está com a sintaxe do mysql, correto?
O PG se comporta um pouco diferente do mysql na DDL de criação das tabelas em relação aos tipos de campos.
Onde você usa int() pode substituir por smallint, int/integer ou bigint de acordo com o tamanho que você quer.
Logo, você não tem a definição int(10) e sim um integer, por exemplo.
É disso que ele está reclamando, dos parênteses que você usou.
Depois de corrigir isso ele vai reclamar do enum que você usou.
Pra isso é necessário criar um TYPE.
Veja na referência: 8.7. Enumerated Types
Depois disso a sua tabela vai ser criada normalmente.
Só por observação, os campos que não são NOT NULL não precisam ser definidos "default NULL" porque isso ele já assume automaticamente.
Espero ter ajudado.
ABçs,
Edição feita por: Celão, 09/09/2009, 09:34.
#3
Posted 09/09/2009, 09:59
Amigo,
Este create está com a sintaxe do mysql, correto?
O PG se comporta um pouco diferente do mysql na DDL de criação das tabelas em relação aos tipos de campos.
Onde você usa int() pode substituir por smallint, int/integer ou bigint de acordo com o tamanho que você quer.
Logo, você não tem a definição int(10) e sim um integer, por exemplo.
É disso que ele está reclamando, dos parênteses que você usou.
Depois de corrigir isso ele vai reclamar do enum que você usou.
Pra isso é necessário criar um TYPE.
Veja na referência: 8.7. Enumerated Types
Depois disso a sua tabela vai ser criada normalmente.
Só por observação, os campos que não são NOT NULL não precisam ser definidos "default NULL" porque isso ele já assume automaticamente.
Espero ter ajudado.
ABçs,
Nossa, valeu mesmo pela ajuda!! Deu certo aqui a criação da tabela

Só me sobrou uma dúvida. Na criação da tabela me saiu essa mensagem: CREATE TABLE / PRIMARY KEY criará índice implícito "iqa_pkey" na tabela "iqa"
A Primary Key que eu tinha definido (PRIMARY KEY (ident_ponto,ident_projeto,periodo,profundidade)) não vai funcionar como chave primária, e sim essa "iqa_pkey"?
#4
Posted 15/09/2009, 22:02
Mas é só a nomenclatura que ele criou. Sua PK funcionará como você informou na hora da criação!
Abçs e boa sorte,
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)