ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Trigger definir valor em campo Status [RESOLVIDO]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
LordeMorpheus
Novato
Novato


Registrado: Domingo, 7 de Março de 2010
Mensagens: 38

MensagemEnviada: Dom Ago 01, 2010 4:32 pm    Assunto: Trigger definir valor em campo Status [RESOLVIDO] Responder com Citação

Olá a todos, utilizo banco de dados Firebird e quero disparar uma trigger que no momento do cadastro de um paciente, defina o status.

Para o campo status são aceitos dois valores: 0 para inativo e 1 para ativo.

No momento do cadastro o paciente vai estar ativo, ou seja, status=1...

Criei a seguinte trigger:

Código:
CREATE trigger status_paciente for pacientes
active after insert position 0
AS
BEGIN
  IF (NEW.STATUS IS NULL) THEN
    insert into pacientes (status) values (1);
END


Mas não funcionou, o valor do campo status fica sempre 0...

Quem puder me dar uma ajuda agradeceria...

Até mais...


Editado pela última vez por LordeMorpheus em Qui Ago 05, 2010 2:03 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
BrunoMoreyra
Colaborador
Colaborador


Registrado: Quinta-Feira, 26 de Novembro de 2009
Mensagens: 1398
Localização: Goiânia - GO / Brasília - DF

MensagemEnviada: Seg Ago 02, 2010 8:22 am    Assunto: Re: Trigger definir valor em campo Status Responder com Citação

bom dia,

pelo o que eu entendi, você não precisará fazer uma inserção. Você terá que fazer uma alteração, pois o registro já foi inserido e você quer apenas alterar um campo da tabela.

Tente algo assim.

Código:

CREATE trigger status_paciente for pacientes
active after insert position 0
AS
BEGIN
  IF (NEW.STATUS IS NULL) THEN
    Update Pacientes Set Status = 1
      Where PacienteId = New.PacienteId;
END


LordeMorpheus escreveu:
Olá a todos, utilizo banco de dados Firebird e quero disparar uma trigger que no momento do cadastro de um paciente, defina o status.

Para o campo status são aceitos dois valores: 0 para inativo e 1 para ativo.

No momento do cadastro o paciente vai estar ativo, ou seja, status=1...

Criei a seguinte trigger:

Código:
CREATE trigger status_paciente for pacientes
active after insert position 0
AS
BEGIN
  IF (NEW.STATUS IS NULL) THEN
    insert into pacientes (status) values (1);
END


Mas não funcionou, o valor do campo status fica sempre 0...

Quem puder me dar uma ajuda agradeceria...

Até mais...

_________________
Atencisamente,

Bruno Moreira Batista.
http://www.kawek.com.br/BrunoBatista
Skype: Bruno_Batysta
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
LordeMorpheus
Novato
Novato


Registrado: Domingo, 7 de Março de 2010
Mensagens: 38

MensagemEnviada: Ter Ago 03, 2010 8:29 pm    Assunto: Re: Trigger definir valor em campo Status Responder com Citação

BrunoMoreyra escreveu:
bom dia,

pelo o que eu entendi, você não precisará fazer uma inserção. Você terá que fazer uma alteração, pois o registro já foi inserido e você quer apenas alterar um campo da tabela.

Tente algo assim.

Código:

CREATE trigger status_paciente for pacientes
active after insert position 0
AS
BEGIN
  IF (NEW.STATUS IS NULL) THEN
    Update Pacientes Set Status = 1
      Where PacienteId = New.PacienteId;
END



Olá BrunoMoreyra,, obrigado pela atenção, você tem razão, mas ao tentar criar essa trigger o IBExpert retorna o seguinte erro:

This operation is not defined for system tables.
unsuccessful metadata update.
DEFINE TRIGGER failed.
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_8".

O que pode ser?

Mais uma vez obrigado e até mais..
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
BrunoMoreyra
Colaborador
Colaborador


Registrado: Quinta-Feira, 26 de Novembro de 2009
Mensagens: 1398
Localização: Goiânia - GO / Brasília - DF

MensagemEnviada: Ter Ago 03, 2010 10:15 pm    Assunto: Re: Trigger definir valor em campo Status Responder com Citação

Boa noite,

agora de IBExpert eu não entendo, e essa mensagem não é familiar para mim.
Deve ter outras pessoas que possuem este conhecimento.
LordeMorpheus escreveu:
BrunoMoreyra escreveu:
bom dia,

pelo o que eu entendi, você não precisará fazer uma inserção. Você terá que fazer uma alteração, pois o registro já foi inserido e você quer apenas alterar um campo da tabela.

Tente algo assim.

Código:

CREATE trigger status_paciente for pacientes
active after insert position 0
AS
BEGIN
  IF (NEW.STATUS IS NULL) THEN
    Update Pacientes Set Status = 1
      Where PacienteId = New.PacienteId;
END



Olá BrunoMoreyra,, obrigado pela atenção, você tem razão, mas ao tentar criar essa trigger o IBExpert retorna o seguinte erro:

This operation is not defined for system tables.
unsuccessful metadata update.
DEFINE TRIGGER failed.
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_8".

O que pode ser?

Mais uma vez obrigado e até mais..

_________________
Atencisamente,

Bruno Moreira Batista.
http://www.kawek.com.br/BrunoBatista
Skype: Bruno_Batysta
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
LordeMorpheus
Novato
Novato


Registrado: Domingo, 7 de Março de 2010
Mensagens: 38

MensagemEnviada: Qui Ago 05, 2010 2:00 pm    Assunto: Re: Trigger definir valor em campo Status Responder com Citação

BrunoMoreyra escreveu:
Boa noite,

agora de IBExpert eu não entendo, e essa mensagem não é familiar para mim.
Deve ter outras pessoas que possuem este conhecimento.
LordeMorpheus escreveu:
BrunoMoreyra escreveu:
bom dia,

pelo o que eu entendi, você não precisará fazer uma inserção. Você terá que fazer uma alteração, pois o registro já foi inserido e você quer apenas alterar um campo da tabela.

Tente algo assim.

Código:

CREATE trigger status_paciente for pacientes
active after insert position 0
AS
BEGIN
  IF (NEW.STATUS IS NULL) THEN
    Update Pacientes Set Status = 1
      Where PacienteId = New.PacienteId;
END



Olá BrunoMoreyra,, obrigado pela atenção, você tem razão, mas ao tentar criar essa trigger o IBExpert retorna o seguinte erro:

This operation is not defined for system tables.
unsuccessful metadata update.
DEFINE TRIGGER failed.
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_8".

O que pode ser?

Mais uma vez obrigado e até mais..


Olá BrunoMoreyra, foi estranho mas consegui. Eu apenas criei a trigger primeiro e depois inseri o código nela e gravei. Funcionou normalmente.

Era exatamente o que eu queria, mais uma vez muito obrigado...

Até mais...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB