Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

[SOLUCIONADO] Crear un trigger que valide si existe ID e inserte fecha automaticamente

Estas en el tema de Crear un trigger que valide si existe ID e inserte fecha automaticamente en el foro de Oracle en Foros del Web. Necesito crear un Trigger before insert que verifique si un registro de ID/nombre existe antes de insertarlo en la tabla y crear registros sobre la ...
  #1 (permalink)  
Antiguo 21/05/2013, 14:48
Avatar de Kergan  
Fecha de Ingreso: mayo-2013
Mensajes: 4
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Crear un trigger que valide si existe ID e inserte fecha automaticamente

Necesito crear un Trigger before insert que verifique si un registro de ID/nombre existe antes de insertarlo en la tabla y crear registros sobre la fecha/usuario que lo creo automáticamente utlilizando ORACLE SQL PLUS.

Esto es lo que tengo actualmente:

Creacion de la tabla:

Código MySQL:
Ver original
  1. CREATE TABLE empleados
  2. ( ID number,
  3.   nombre varchar2(50),
  4.   empleo varchar2(30),
  5.   fecha_creacion date,
  6.   creado_por varchar2(30));

Creacion del trigger

Código MySQL:
Ver original
  1. CREATE OR REPLACE TRIGGER creacion_empleado
  2. BEFORE INSERT ON empleados
  3.  
  4.  
  5.     IF ( NEW.ID  is == ID) THEN
  6.         RAISE_APPLICATION_ERROR(-20101, 'El ID o el nombre ya existen');
  7.     ELSE
  8.         SET NEW.fecha_creacion  = SYSDATE;
  9.         SET NEW.creado_por  = CURRENT_USER;
  10.     END IF;
  #2 (permalink)  
Antiguo 21/05/2013, 16:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Crear un trigger que valide si existe ID e inserte fecha automaticamente

MySQL no es Oracle. MySQL fue adquirido por Oracle como parte de Sun, pero ni es lo mismo ni jamás se han integrado, ni lo harán.
Tienen diferentes sintaxis y otras herramientas.
Muevo el post al foro de Oracle.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 21/05/2013 a las 17:42
  #3 (permalink)  
Antiguo 22/05/2013, 06:11
Avatar de zarwar  
Fecha de Ingreso: mayo-2013
Ubicación: Madrid
Mensajes: 77
Antigüedad: 11 años, 6 meses
Puntos: 4
Respuesta: Crear un trigger que valide si existe ID e inserte fecha automaticamente

El campo ID parece una primary key por lo que yo la crearía y dejaría saltar la excepción.

El trigger debería de ser algo parecido a este:
Código SQL:
Ver original
  1. CREATE OR REPLACE TRIGGER creacion_empleado
  2. BEFORE INSERT ON empleados
  3.    FOR EACH ROW      
  4. BEGIN
  5.    :NEW.fecha_creacion := sysdate;
  6.    :NEW.creado_por := sys_context('USERENV','CURRENT_USER');
  7. END;
  8. /

Un saludo
__________________
Entra en mi blog sobre base de datos Oracle:
http://mundodb.es

Última edición por gnzsoloyo; 22/05/2013 a las 06:22 Razón: Highlight "SQL"...
  #4 (permalink)  
Antiguo 22/05/2013, 08:27
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Crear un trigger que valide si existe ID e inserte fecha automaticamente

Deacuerdo con zarwar.
Pero tendrías que poner como primary key el campo en tu tabla.
Como veo en tu primer post, no lo tienes.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 29/05/2013, 20:47
Avatar de Kergan  
Fecha de Ingreso: mayo-2013
Mensajes: 4
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Crear un trigger que valide si existe ID e inserte fecha automaticamente

Gracias por la respuesta al fin lo pude resolver antes de que me respondieran al parecer si la regue muy gacho tenia la idea de que mysql y oracle eran iguales esque soy noob :/. Muchas gracias a los 2 por sus respuestas si no es mucha molestia porfavor ayudenme con el nuevo problema que tengo ahora mucho mas dificil lo pondre en un nuevo tema jajaja.

Al fin quedo asi:

Código SQL:
Ver original
  1. CREATE OR REPLACE TRIGGER creacion_empleado
  2. BEFORE INSERT ON empleados
  3. FOR EACH ROW
  4.  
  5. BEGIN
  6.    
  7.     :NEW.fecha_creacion  :=  SYSDATE;
  8.     :NEW.creado_por := USER;
  9.  
  10. END creación_empleado;

Etiquetas: mysql, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:30.