erro ao fazer check no postgree
22/10/2012
0
estou tentando fazer esta check no postgree:
ALTER TABLE feriado ADD CONSTRAINT verificar_feriado(((nome),(data),(id_pais))<( 2));
isso seria para fazer que um registro não seja duplicado, essa forma e semelhante a que eu fazia no sql server, mas me retorna este erro:
Erro de SQL:
ERRO: erro de sintaxe em ou próximo a "("
LINE 1: ...TER TABLE feriado ADD CONSTRAINT verificar_feriado(((nome),(...
^
No bloco:
ALTER TABLE feriado ADD CONSTRAINT verificar_feriado(((nome),(data),(id_pais))<( 2))
alguém pode me dar uma ajuda ai com postgree, help me
Wisley Souza
Posts
22/10/2012
Tiago
Olhando o seu código não encontrei a palavra reservada "CHECK".
acredito que ficaria assim:
ALTER TABLE feriado ADD CONSTRAINT verificar_feriado CHECK (((nome),(data),(id_pais))<( 2))
22/10/2012
Wisley Souza
Erro de SQL:
ERRO: operador não existe: record < integer
HINT: Nenhum operador corresponde com o nome e o(s) tipo(s) de argumento(s) informados. Você precisa adicionar conversões de tipo explícitas.
No bloco:
ALTER TABLE feriado ADD CONSTRAINT verificar_feriado CHECK (((nome),(data),(id_pais))<( 2))
22/10/2012
Wisley Souza
data é do tipo date
id_pais e do tipo bigint
22/10/2012
Wisley Souza
22/10/2012
Tiago
23/10/2012
Jair N.
veja chave...
ALTER TABLE feriado ADD CONSTRAINT verificar_feriado UNIQUE (nome, data, id_pais);
Veja index....
CREATE UNIQUE INDEX verifica_feriado ON feriado USING hash (nome, data, id_pais);
23/10/2012
Wisley Souza
quanto ao colega de cima que pediu pra mim he mostrar como faço no sql server, faço da seguinte maneira:
1 - seleciono a tabela feriado
2 - vou em restrições, geral, expressão
3 - digito o comando ([dbo].[chk_feriado]([NOME],[DATA],[ID_PAIS])<(2))
pronto funciona, não deixa ter a repetição, prestando atenção em postgre ele entende que eu não posso colocar o valor menor que 2 na coluna e dar erro por ser do tipo varchar...
23/10/2012
Tiago
23/10/2012
Wisley Souza
se eu converter ele vai simplesmente impedir que seja inserido valor inteiro menos que 2, eu acho rsrs
26/10/2012
Diego Araújo
eu não entendi exatamente o que você quer fazer mas a sintaxe exata para criação de check é essa:
create TB_departamento(
id int primary key,
data int not null,
codigo int not null);
ALTER TABLE "TB_departamento" ADD CONSTRAINT verificar_numero1 CHECK (id<2);
ALTER TABLE "TB_departamento" ADD CONSTRAINT verificar_numero2 CHECK (date<2);
ALTER TABLE "TB_departamento" ADD CONSTRAINT verificar_numero3 CHECK (codigo<2);
Espero ter ajudado.
26/10/2012
Wisley Souza
não se repita, não tenha outra linha com estes mesmos dados, ai vc pode me dizer, aaaa mas pq vc não usa índice único com esse conjunto de dados, por alguns motivos,...
Clique aqui para fazer login e interagir na Comunidade :)