| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Krames Cdt

Registrado: 27 Abr 2006Mensajes: 19
|
Publicado: Jue 27 Mar, 2008 7:37 pm Asunto: Algunos triggers que desaparecen |
|
|
Buenas,
tengo un problema de lo mas de extraño.
Ejecuto un script en el EMS SQL MANAGER FOR FIREBIRD en donde creo unos procedimientos almacenados. Todo sale bien y al refrescar la base de datos me muestra bien los triggers, pero, al hacer click sobre ellos algunos desaparecen mostrando el siguiente mensaje:
Trigger "INSERT_SUJETO on SUJETO" is unavailable in database.
Push the Refresh button or f5 key to refresh the dabase tree.
Lo peor de todo es que despues de refrescar los procedimientos vuelven a aparecer.
No tienen ningun error de sintaxis ni nada.
Les dejo parte del script:
| Código: |
CONNECT 'D:\TESIS\DATA BASE\siosac.fdb'
USER 'SYSDBA' PASSWORD 'masterkey';
SET TERM @;
CREATE TRIGGER insert_categoria FOR categoria ACTIVE
BEFORE INSERT
AS
DECLARE VARIABLE num_reg INTEGER;
BEGIN
new.id_categoria = NEXT VALUE FOR gen_categoria;
SELECT COUNT(*)
FROM categoria
WHERE nombre LIKE new.nombre
INTO :num_reg;
IF (num_reg <> 0) THEN
EXCEPTION uq_categoria_except;
END@
CREATE TRIGGER insert_grupo FOR grupo ACTIVE
BEFORE INSERT
AS
DECLARE VARIABLE num_reg INTEGER;
BEGIN
new.id_grupo = NEXT VALUE FOR gen_grupo;
SELECT COUNT(*)
FROM grupo
WHERE nombre LIKE new.nombre
INTO :num_reg;
IF (num_reg <> 0) THEN
EXCEPTION uq_grupo_except;
SELECT COUNT(*)
FROM categoria
WHERE id_categoria = new.categoria
INTO :num_reg;
IF (num_reg = 0) THEN
EXCEPTION fk_grupo_categoria_except;
END@
CREATE TRIGGER insert_clase FOR clase ACTIVE
BEFORE INSERT
AS
DECLARE VARIABLE num_reg INTEGER;
BEGIN
new.id_clase = NEXT VALUE FOR gen_clase;
SELECT COUNT(*)
FROM clase
WHERE nombre LIKE new.nombre
INTO :num_reg;
IF (num_reg <> 0) THEN
EXCEPTION uq_clase_except;
SELECT COUNT(*)
FROM grupo
WHERE id_grupo = new.grupo
INTO :num_reg;
IF (num_reg = 0) THEN
EXCEPTION fk_clase_grupo_except;
END@
/*ESTE ES EL QUE DESAPARECE*/
CREATE TRIGGER insert_sujeto FOR sujeto ACTIVE
BEFORE INSERT
AS
DECLARE VARIABLE num_reg INTEGER;
BEGIN
new.id_sujeto = NEXT VALUE FOR gen_sujeto;
SELECT COUNT(*)
FROM sujeto
WHERE nombre LIKE new.nombre
INTO :num_reg;
IF (num_reg <> 0) THEN
EXCEPTION uq_sujeto_except;
SELECT COUNT(*)
FROM clase
WHERE id_clase = new.clase
INTO :num_reg;
IF (num_reg = 0) THEN
EXCEPTION fk_sujeto_clase_except;
END@
/*ESTE TAMBIEN DESAPARECE*/
CREATE TRIGGER insert_revision FOR revision ACTIVE
BEFORE INSERT
AS
DECLARE VARIABLE num_reg INTEGER;
BEGIN
new.id_revision = NEXT VALUE FOR gen_revision;
SELECT COUNT(*)
FROM visita
WHERE id_visita = new.visita
INTO :num_reg;
IF (num_reg = 0) THEN
EXCEPTION fk_revision_visita_except;
SELECT COUNT(*)
FROM usuario
WHERE id_usuario = new.usuario
INTO :num_reg;
IF (num_reg = 0) THEN
EXCEPTION fk_revision_usuario_except;
END@
SET TERM ;@
COMMIT WORK;
|
Gracias de antemano. _________________ Dios te ama. |
|
| Volver arriba |
|
 |
alfredo Master

Registrado: 13 Oct 2003Mensajes: 246Ubicación: Valencia Venezuela
|
Publicado: Mie 02 Abr, 2008 7:27 pm Asunto: |
|
|
| Saludos, prueba a poner un commit entre trigger y trigger. |
|
| Volver arriba |
|
 |
|