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

creacion de un trigger para comprobar antes de un insert

Estas en el tema de creacion de un trigger para comprobar antes de un insert en el foro de Mysql en Foros del Web. Buenas, tengo un pequeño problema con un trigger, y la verda es el primero que tengo que hacer. Necesito que antes de dar de alta ...
  #1 (permalink)  
Antiguo 03/11/2012, 18:20
 
Fecha de Ingreso: noviembre-2012
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 1
Pregunta creacion de un trigger para comprobar antes de un insert

Buenas, tengo un pequeño problema con un trigger, y la verda es el primero que tengo que hacer.

Necesito que antes de dar de alta una oferta, compruebe que el salario minimo es menor que el salario maximo.

CREATE OR REPLACE FUNCTION ex_triger() RETURNS TRIGGER AS '


BEGIN

if salari_minim > salari_maxim then NOT INSERT ;

RETURN NEW;

END;


' LANGUAGE 'plpgsql';



CREATE TRIGGER comprobar_salari BEFORE INSERT ON ofertes FOR EACH ROW EXECUTE PROCEDURE ex_triger();

primero lo ago en una funcion i luego llamo al trigger? algun consejo

gracias

Luci.
  #2 (permalink)  
Antiguo 03/11/2012, 19:11
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: creacion de un trigger para comprobar antes de un insert

1. Los triggers no se llaman, se disparan solos ante la ocurrencia de un evento dado (INSERT, UPDATE o DELETE), sobre la tabla donde se define.
2. MySQL no admite que un TRIGGER invoque rutinas almacenadas (funciones o procedures).
3. Un TRIGGER, no devuelve datos. No es una rutina que devuelva o reciba parámetros (como no sean los datos propios del registro afectado por la sentencia).

Dicho esto, ¿qué es lo que se supone que quieres hacer?

Cita:
Necesito que antes de dar de alta una oferta, compruebe que el salario minimo es menor que el salario maximo.
Eso no se resuelve con n TRIGGER, esas son validaciones que se hacen en la aplicación y que deben resolverse siempre antes de realizar el INSERT...
Al menos eso es lo que hacen todos los sistemas, y es lo que se ense´ña a haer cuando estudias programación y sistemas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/11/2012, 03:36
 
Fecha de Ingreso: noviembre-2012
Mensajes: 5
Antigüedad: 11 años, 6 meses
Puntos: 1
Pregunta Respuesta: creacion de un trigger para comprobar antes de un insert

Primero de todo gracias por con testar tan rápido .

un Trigger es un disparador no? por lo que yo no puedo crear uno que ANTES de cada insert en la tabla OFERTAS, compruebe que el salario minimo sea menor que el salario maximo, si es asi, dejara hacer en INSERT, si no, no dejara.

TABLA OFERTAS:
CREATE TABLE Ofertes (
idOferta SERIAL,
any_alta int,
descripcio VARCHAR(50),
salari_minim INT,
salari_maxim INT,
contracte VARCHAR(25),
PRIMARY KEY (idOferta)
);

la verdad que antes he creado otro TRIGGER con una estructura parecida a la de mi primer mensaje es decir:

CREATE TRIGGER nombre ON TABLA FOR EACH ROW EXECUTE PROCEDURE funcion(argumentos)

lo que hace es que cada vez que se inserta un alumno, me suma 1 al total de alumnos:

CREATE OR REPLACE FUNCTION ex_triger() RETURNS TRIGGER AS '


BEGIN

UPDATE assignatura SET numalumnes = numalumnes + 1;

RETURN NEW;

END;


' LANGUAGE 'plpgsql';



CREATE TRIGGER mesAlumnes AFTER INSERT ON alumne FOR EACH ROW EXECUTE PROCEDURE ex_triger();

dicho todo este rollo XD, tengo que crear algo parecido.

si así no lo ago bien, tu como lo harias :S?

Etiquetas: sql, 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 17:59.