Ayuda con un DISPARADOR
Publicado por Rubix (3 intervenciones) el 15/01/2007 16:54:08
Hola! Estoy haciendo un trigger un poco chorra para un trabajo de clase y no me funciona bien y queria pediros ayuda a ver si encontramos el fallo.
Tengo una tabla llamada CD que contiene :
IMSN (identificador del CD, integer)
Duracion (en segundos, integer)
titulo (varchar)
caratula (donde ira almacenada la caratula, Integer. Acepta NULOS)
La cuestion es que quiero que si no se inserta una caratula me ponga por defecto la caratula el valor 1.
Aqui os paso la declaracion de la tabla CD y el trigger que he creado:
CREATE TABLE CD(
IMSN VARCHAR(15) NOT NULL,
titulo VARCHAR(20) NOT NULL,
duracion INTEGER NOT NULL,
caratula INTEGER,
CONSTRAINT cp_CD PRIMARY KEY(IMSN)
);
CREATE OR REPLACE FUNCTION caratuladefecto() RETURNS TRIGGER AS '
DECLARE
ruta INTEGER;
BEGIN
SELECT caratula INTO ruta
FROM cd
WHERE IMSN = NEW.IMSN;
IF (ruta=NULL) THEN
ruta=1;
END IF;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
CREATE TRIGGER tgrCaratulaDefecto
BEFORE INSERT ON cd FOR EACH ROW
EXECUTE PROCEDURE caratuladefecto();
¿Alguna sugerencia? Muchas gracias!!!!
Tengo una tabla llamada CD que contiene :
IMSN (identificador del CD, integer)
Duracion (en segundos, integer)
titulo (varchar)
caratula (donde ira almacenada la caratula, Integer. Acepta NULOS)
La cuestion es que quiero que si no se inserta una caratula me ponga por defecto la caratula el valor 1.
Aqui os paso la declaracion de la tabla CD y el trigger que he creado:
CREATE TABLE CD(
IMSN VARCHAR(15) NOT NULL,
titulo VARCHAR(20) NOT NULL,
duracion INTEGER NOT NULL,
caratula INTEGER,
CONSTRAINT cp_CD PRIMARY KEY(IMSN)
);
CREATE OR REPLACE FUNCTION caratuladefecto() RETURNS TRIGGER AS '
DECLARE
ruta INTEGER;
BEGIN
SELECT caratula INTO ruta
FROM cd
WHERE IMSN = NEW.IMSN;
IF (ruta=NULL) THEN
ruta=1;
END IF;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';
CREATE TRIGGER tgrCaratulaDefecto
BEFORE INSERT ON cd FOR EACH ROW
EXECUTE PROCEDURE caratuladefecto();
¿Alguna sugerencia? Muchas gracias!!!!
Valora esta pregunta
0