função para tabela PESSOA , PESSOAFISICA e PESSOAJURIDICA

25/10/2012

0

No banco postgresql tenho três tabelas específicas para PESSOA, PESSOAFISICA e PESSOAJURIDICA. Na PESSOA a pk é um sequencial automático (IDPESSOA), na PESSOAFISICA e PESSOAJURIDICA a pk é a fk da PESSOA (CODPESSOA). Para cada criei uma função para inserção, mas gostaria de criar uma função trigger para no after da PESSOA ser disparada e verificar se o tipo da PESSOA é físico ou jurídico, então executar um insert na respectiva tabela filha. Pergunta:
1 - Qual a forma mais correta de fazer esta função e como pegar a pk corrente da tabela PESSOA, pois tbm é pk da filha?
2 - Como executar a função trigger no C# usando asp.net ?

Desde já muito obrigado!
Fabio Marques

Fabio Marques

Responder

Posts

25/10/2012

Robson Alves

O que eu faria:

Efetuaria um select MAX na tabela de pessoa pegando o último ID e passando para a filha correspondente.

A trigger é uma função do SQL, portanto ele irá executar o "Gatilho" conforme o evento DML (INSERT, UPDATE, DELETE)

portanto conforme você cria sua trigger e definir em qual evento ela irá ser chamada, ela o fará, o C# não tem dominio sobre isso.
Responder

25/10/2012

Robson Alves

Outra coisa, que é mais funcional no SQL

utilizar o @@INDENTITY ou SELECT SCOPE_IDENTITY

eles retornam o último ID inserido, no caso você deve utilizar este comando após o INSERT.
Responder

25/10/2012

Robson Alves

Fábio cometi um engano, estou no fórum de PostGre e postei uma solução para MSSQLServer
--, desculpa!

veja se te ajuda.
[url]http://stackoverflow.com/questions/6485778/php-postgres-get-last-insert-id[/url]
Responder

25/10/2012

Fabio Marques

Robson, muito obrigado por sua ajuda! vou dar uma trabalhada agora a noite nesta sua dica!
Responder

APRENDA A PROGRAMAR DO ZERO AO PROFISSIONAL

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar