Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal.
Gostari a de saber se tem como montar diagrama no postgresql
e como proceder?
pois sou novo em postgre, sempre usei bd´s da microsoft.
agradeço a atenção
t+
Bom pessoal
Sempre utilizei o sql sever da microsoft para criar o bancos de dados para cliente e para mim.
agora estou começando a utilizar o postgresql, fazendo testes para ver como ele funciona e desempenho.
Montei duas tabelas que ela são relacionadas, entre elas.
Coluna codigo da tabela clienteCont para a coluna clienteCont na tabela Calculo.
Gostaria de fazer como faço no sql Server. Criar um relacionamento com o modo de atualizar e exclusão em cascata.
Quando excluir o cliente da tabela cliente automaticamente devera excluir os calculos deste cliente.
ele faz isto graficamente ou tenho que criar trigger?
agradeço atenção.
Oi Nilson,
Eu utilizo o Postgres há alguns anos e estou muito satisfeito. Ele segue os padrões do SQL, tem ótimo suporte a funções e triggers, é robusto, implementa bem a integridade referencial, tem muitas funções nativas disponíveis, enfim, ele é um MySQL bem turbinado.
A única desvantagem que confesso que existe é o fato de muitos desenvolvedores terem se acomodado usando o MySQL, então para o Postgres não existe tanta troca de informação em foruns como existe para o MySQL, assim como a maioria das aplicações free que utilizam banco de dados, utilizam o MySQL. Essa sua dúvida mesmo, se ela tivesse sido relacionada com o MySQL, certamente você tá teria obtido várias respostas. Mas mesmo assim, para mim tem valido muito a pena usar o Postgres, pois se eu estivesse usando o MySQL já teria ficado na mão várias vezes em aplicações que desenvolvo.
Vamos a sua dúvida, para resolver essa questão é simples, basta na criação da tabela você utilizar a cláusula "ON DELETE CASCADE" na coluna que é chave estrangeira, no caso das tabelas que você falou ficaria assim:
create table clienteCont(
codigo integer PRIMARY KEY
);
create table Calculo(
codigo serial PRIMARY KEY,
clienteCont integer REFERENCES clienteCont(codigo) ON DELETE CASCADE
);
A cláusula "ON DELETE CASCADE" quer dizer que se um cliente for excluido na tabela clienteCont, todos os registros da tabela Calculo que fizerem referência a ele também serão excluídos.
As cláusulas possível são:
ON DELETE CASCADE (Apagar em cascata)
ON UPDATE CASCADE (Atualizar em cascata)
ON DELETE CASCADE ON UPDATE CASCADE (Apagar e atualizar em cascata)
Caso você não queira permitir que um cliente seja excluído se tiver registros na tabela Calculo, basta omitir o "ON DELETE CASCADE". Se você quiser deixar isso mais claro ainda, basta usar a cláusula "ON DELETE RESTRICT", ela quer dizer que um determinado registro não pode ser excluído se houver alguma coluna que a referencie, esta é a opção padrão para chaves estrangeiras no Postgres.
Espero que tenha sido útil a informação para você!
Até mais
Boa tarde M. Simão
Cara ajudou muito, esta resposta.
ja estou utilizando o postgresql 9.1 como bd para uma aplicação.
valeu se eu tiver alguma duvida de mando um novo post.
t+
Oi Nilson,
Por favor explique melhor a sua dúvida, assim eu e outros usuários poderemos ajuda-lo de forma mais objetiva.
Valeu!