Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-02-2004
ronson ronson is offline
Miembro
 
Registrado: feb 2004
Posts: 100
Poder: 21
ronson Va por buen camino
Procedure Y Trigger

hola amigos, imaginemos que tenemos este procedure:

CREATE PROCEDURE BORRAR_ALBARAN (
PNUMERO INTEGER)
AS
BEGIN
DELETE FROM ALBARANES
WHERE NUMERO=NUMERO;
/* Procedure body */
SUSPEND;
END

este procedure borraria la linea en la tabla maestro donde el numero sea igual al numero, el trigger asociado ANTES de borrar en albaranes para borrar en LINEAALBARANES tengo una duda:


CREATE TRIGGER PROPAGAR_BORRADO_LALBARANES FOR ALBARANES
BEFORE DELETE AS
BEGIN
DELETE FROM LINEAALBARANES WHERE NUMERO=old.NUMERO AND ANNO=old.ANNO;

/*y aqui viene mi duda: por que me da error de compilacion?
me sale esto:
fmCompile.quCompile:
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Unexpected end of command.*/

END

NACLU2
Responder Con Cita
  #2  
Antiguo 24-02-2004
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
Me parece que el error es que te falta un "End;" al final del trigger...

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 24-02-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 22
Nuria Va por buen camino
Hola!

Prueba a creartelo así:
Código:
SET TERM ;^

CREATE TRIGGER PROPAGAR_BORRADO_LALBARANES FOR ALBARANES
ACTIVE BEFORE DELETE POSITION 0 AS
BEGIN
  DELETE FROM LINEAALBARANES WHERE NUMERO=old.NUMERO AND            ANNO=old.ANNO;
END^

SET TERM ;^
Espero que te sirva!
Responder Con Cita
  #4  
Antiguo 24-02-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Solo comento que Interbase/Firebird soporta automáticamente actualizaciones y borrados en cascada, asi que si queres que se eliminen automáticamente los detalles de una tabla, al crear el constraint basta con añadir:

on delete cascade;

y listo. La base de datos se encarga y no tenes que programar vos estos triggers.

Hasta luego.



pd. otra cosa... en el procedure Borrar_Albaran... no se si hay algo mas, pero no le veo sentido a la sentencia Suspend;
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 24-02-2004
Avatar de Nuria
Nuria Nuria is offline
Miembro
 
Registrado: may 2003
Posts: 531
Poder: 22
Nuria Va por buen camino
Cita:
Publicado originalmente por jachguate
Solo comento que Interbase/Firebird soporta automáticamente actualizaciones y borrados en cascada... on delete cascade;
Y yo sin saberlo...
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 06:41:09.


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