elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  TRIGGER EN ORACLE
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: TRIGGER EN ORACLE  (Leído 4,906 veces)
RULZY

Desconectado Desconectado

Mensajes: 4


Ver Perfil
TRIGGER EN ORACLE
« en: 15 Junio 2011, 20:12 »

HOLA ESTOY TENIENDO PROBLEMITAS POSIBLEMENTE DE SINTAXIS CON UN TRIGGER EN ORACLE

LO QUE TENGO QUE HACER ES QUE CUANDO SE MODIFIQUE LA TABLA "GENERADORES" SE CREE UN REGISTRO EN LA TABLA "MANTENIMIENTO" CON GUARDANDO LA DESCRIPCION CON EL TEXTO  ANTIGUA CAPACIDAD:‟ + CAPACIDAD VIEJA +  NUEVA CAPACIDAD:‟ + CAPACIDAD NUEVA

NO SE SI ES UN PRBLEMA DE CONCATENAS O QUE, PERO ME SALTA ERROR AL MOMENTO DE COMPILARLO:



TRIGGER TG_PUNTO_B AFTER UPDATE ON GENERADORES 
BEGIN

INSERT INTO MANTENIMIENTO (numMant, codGen, fchMant, dscMant)
VALUES (seq_numMant.NextVal, :new.codGen, SYSDATE, 'Antigua capacidad: ' :old.KWGEN ' Nueva capacidad: ' :new.KWGEN);

END;





Error que empieza en la línea 1 del comando:
TRIGGER TG_PUNTO_B AFTER UPDATE ON GENERADORES 
Informe de error:
Comando desconocido
La variable de enlace "new" no está declarada
bloque anónimo terminado



HELP!




En línea

satu


Desconectado Desconectado

Mensajes: 301

Siempre aprendiendo


Ver Perfil WWW
Re: TRIGGER EN ORACLE
« Respuesta #1 en: 23 Junio 2011, 11:59 »

Hola

Lo primero de todo decirte que no escribas en mayúsculas, léete las normas

Acabo de leer esto que creo que soluciona tu problema

Citar
Por defecto todos los disparadores son de tipo for each statement, de manera que se ejecutan una sola vez, antes o después de la instrucción que lanza su ejecución. Existen dos variables externas old y new que almacenan respectivamente los valores de cada tupla antes y después de ejecutar sobre ella la instrucción que lanza al disparador. Sin embargo, estas variables solamente se pueden utilizar cuando se escoge la opción de ejecutar el disparador una vez por cada tupla (for each row), es decir ejecutarlo separadamente para cada una de las tuplas afectadas por la instrucción SQL que ha activado al disparador. En este caso la cláusula optativa WHEN sirve para especificar una condición adicional que debe cumplir una tupla afectada por el disparador para que éste sea ejecutado sobre ella.

Saludos


En línea

Breakbeat como forma de vida
kekehuete

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: TRIGGER EN ORACLE
« Respuesta #2 en: 6 Julio 2011, 22:36 »

seria algo asi:

CREATE OR REPLACE TRIGGER TG_PUNTO_B
  AFETER UPDATE ON generadores
  FOR EACH ROW
BEGIN

  BEGIN
     INSERT
       INTO mantenimiento (numMant, codGen, fchMant, dscMant)
     VALUES (seq_numMant.NextVal, :new.codGen, SYSDATE, 'Antigua capacidad: ' :old.KWGEN ' Nueva capacidad: ' :new.KWGEN);
  EXCEPTION
     WHEN OTHERS THEN
       Raise_Application_Error(-20000, 'Error al actualizar ' || SQLERRM);
  END;
 
END;

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con trigger
Programación Visual Basic
Webagent007 1 990 Último mensaje 12 Marzo 2006, 21:20
por Webagent007
Trigger + usuario por cookies??
Bases de Datos
Azielito 7 5,927 Último mensaje 12 Febrero 2010, 01:05
por ^Tifa^
enlazar trigger + jobs o prod almacenado + dts
Bases de Datos
maketoak 0 1,393 Último mensaje 1 Diciembre 2011, 12:28
por maketoak
Capturar una query con un trigger
Bases de Datos
Shell Root 0 1,420 Último mensaje 10 Abril 2012, 04:25
por Shell Root
java y trigger
Java
.rn3w. 2 2,187 Último mensaje 12 Junio 2012, 02:52
por lluvplay
Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines