Ver Mensaje Individual
  #8 (permalink)  
Antiguo 21/04/2010, 16:11
neon_ed
 
Fecha de Ingreso: abril-2010
Mensajes: 2
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Trigger/Disparador: borrar en cascada

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Dentro de los TRIGGER no se puede acceder a los valores entrantes con el nombre de la tabla (que por otro lado abarcaría una cantidad de registros y no se pueden hacer comparaciones con "=" entre un valor y un set de valores). Se accede a través de una pseudovariable llamada "NEW", en el caso del registro entrante, u "OLD", en el caso de los UPDATE, para acceder al registro que se está reemplazando.
Mira bien la sintaxis en el manual: [URL="http://www.sqlite.org/lang_createtrigger.html"]SQLITE TRIGGERS[/URL]

Código SQL:
Ver original
  1. CREATE TRIGGER BorrarMedidas
  2. BEFORE DELETE
  3. ON CLIENTES
  4. FOR EACH ROW
  5.   BEGIN
  6.     DELETE FROM MEDIDAS WHERE id_cliente= NEW.id_cliente;
  7.   END
hola, estaba revisando este codigo con otras tablas pero se supone que hace lo mismo(tablas padre hijo , donde se eliminan los hijos de un padre cuando este se elimina de la tabla padre), la duda es que el sql me tira error de sintaxis cerca de la palabra before, alguien que me pueda ayudar, no entiendo por que a nadie mas le dio ese error, por mas que busco en internet las distintas paginas muestran la sentencia para crear un trigger de la misma manera que aqui, sin enbargo no se por que me dice ese error de sintaxis , alguien que me pueda ayudar porfavor ( probe con el mismo ejemplo y sale lo mismo ( estoy usando el sql management studio express 2005)

este es mi codigo:

1.
CREATE TRIGGER hijo_bd
2.
BEFORE DELETE
3.
ON padre
4.
FOR EACH ROW
5.
BEGIN
6.
DELETE FROM hijo WHERE hijo.id_padre = old.id_padre;
7.
END

espero su respuesta muchas gracias.