Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-08-2003
rafadrover rafadrover is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mallorca
Posts: 48
Poder: 0
rafadrover Va por buen camino
Otra de updates

Hola amigos, de nuevo tengo problemas con el SQL, ahora estoy intentando que cuando me insertan un registro nuevo en una tabla, un campo de esta se actualize con el valor de un campo que esta en otra tabla distinta, he intentado hacerlo con un trigger, pero el interbase me dice que no puedo hacer un subselect dentro del trigger, teneis alguna idea de como deberia hacerse?

Gracias.
Responder Con Cita
  #2  
Antiguo 20-08-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Sinceramente desconozco la potencialidad de los triggers de interbase, pero me parece raro que no puedas hacer algo tan sencillo, es mas la única solución a tu problema desde el lado del servidor, es la utilización de triggers!.. A no ser que plantees diferente el problema, o el valor sea constante y puedas usar Default Values.
Me parece que este hilo tendrías que haberlo posteado en el foro Interbase & Firebird.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 20-08-2003
rafadrover rafadrover is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mallorca
Posts: 48
Poder: 0
rafadrover Va por buen camino
Me parecia mas un problema de SQL que de interbase, ya que teoricamente el SQL es estandard, yo queria que alguien me diera una idea de como tendria que ser ese trigger y probarlo, si despued no funciona en interbase, ya me busco la vida, yo he probado lo siguiente:

create trigger actualiza on tabla1
as
begin
campo_destino = select campo_origen from tabla2 where tabla2.codigo_tabla2=tabla1.ref_tabla2;
end;

Tocaria funcionar no?
Responder Con Cita
  #4  
Antiguo 20-08-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Te reitero que desconozco Interbase, pero de todos modos esta línea no me parece correcta:
Cita:
Posteado originalmente por rafadrover
tabla2.codigo_tabla2=tabla1.ref_tabla2;
En algunos motores, por ejemplo Oracle, puedes modificar los valores que van a ser ingresados en la tabla, entonces solo tendrías que hacer:
Código:
...
Valor Varchar2(..)
BEGIN
  SELECT CAMPO
    INTO Valor
   FROM TABLA2
  WHERE ID=:NEW.RELACIO_A_TABLAD2;
  :NEW.VALOR_TABLA2 := Valor;
END;
En otros motores, por ejemplo SqlServer, tendrías que hacer un update de la tabla dentro del trigger, pues siempre los triggers se disparan despues de haber insertado el registro (Al menos hasta SqlServer 7)

La sintaxis de los triggers, sueles ser bastante particular para cada motor, y no es soportada por SQL ANSI 92, por eso la sugerencia del foro.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #5  
Antiguo 20-08-2003
rafadrover rafadrover is offline
Miembro
 
Registrado: jun 2003
Ubicación: Mallorca
Posts: 48
Poder: 0
rafadrover Va por buen camino
Post

Bueno, todo son ejemplos de codigo je,je
me puedo equivocar.....

Gracias, ha funcionado perfectamente, con interbase, aqui pongo el codigo por si alguien busca lo mismo

Código:
set term!!;
create trigger actu for lineamaterial
before insert as
declare variable preu numeric(15,2);
begin
   select preubase from material where lineamaterial.idmaterial=material.idmaterial into :preu;
   new.preucost=preu;
end!!
Perdonad por lo del simbolito.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:26:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi