Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/09/2011, 09:54
mevalenzuela
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema con trigger o desencadenador

Y aqui va la ultima parte.

/* * EXTENDER ACTUALIZACIONES EN CASCADA A 'Movimientos_Productos' */
IF UPDATE(Sucursal) OR UPDATE(TipoProducto) OR UPDATE(Clave1) OR UPDATE(Clave2)
BEGIN
UPDATE Movimientos_Productos
SET Movimientos_Productos.Sucursal = inserted.Sucursal , Movimientos_Productos.TipoProducto = inserted.TipoProducto , Movimientos_Productos.Clave1 = inserted.Clave1 , Movimientos_Productos.Clave2 = inserted.Clave2
FROM Movimientos_Productos, deleted, inserted
WHERE deleted.Sucursal = Movimientos_Productos.Sucursal AND deleted.TipoProducto = Movimientos_Productos.TipoProducto AND deleted.Clave1 = Movimientos_Productos.Clave1 AND deleted.Clave2 = Movimientos_Productos.Clave2
END

/* * EXTENDER ACTUALIZACIONES EN CASCADA A 'RelCteProd' */
IF UPDATE(Sucursal) OR UPDATE(TipoProducto) OR UPDATE(Clave1) OR UPDATE(Clave2)
BEGIN
UPDATE RelCteProd
SET RelCteProd.Sucursal = inserted.Sucursal , RelCteProd.TipoProducto = inserted.TipoProducto , RelCteProd.Clave1 = inserted.Clave1 , RelCteProd.Clave2 = inserted.Clave2
FROM RelCteProd, deleted, inserted
WHERE deleted.Sucursal = RelCteProd.Sucursal AND deleted.TipoProducto = RelCteProd.TipoProducto AND deleted.Clave1 = RelCteProd.Clave1 AND deleted.Clave2 = RelCteProd.Clave2
END


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE TRIGGER "Productos_ITrig" ON dbo.Productos FOR INSERT AS
SET NOCOUNT ON

/* * REGLA DE VALIDACIÓN DEL CAMPO 'Caja' */
IF (SELECT Count(*) FROM inserted WHERE NOT (Caja Is Not Null)) > 0
BEGIN
RAISERROR 44444 'El campo "Caja" debe contener un valor'
ROLLBACK TRANSACTION
END
ELSE
/* * REGLA DE VALIDACIÓN DEL CAMPO 'Orden' */
IF (SELECT Count(*) FROM inserted WHERE NOT (Orden Is Not Null)) > 0
BEGIN
RAISERROR 44444 'El campo "Orden" debe contener un valor'
ROLLBACK TRANSACTION
END
ELSE
/* * REGLA DE VALIDACIÓN DEL CAMPO 'Ubicacion' */
IF (SELECT Count(*) FROM inserted WHERE NOT (Ubicacion Is Not Null)) > 0
BEGIN
RAISERROR 44444 'El campo "Ubicación" debe contener un valor'
ROLLBACK TRANSACTION
END
ELSE
/* * REGLA DE VALIDACIÓN DEL CAMPO 'Observacion' */
IF (SELECT Count(*) FROM inserted WHERE NOT (Observacion Is Not Null)) > 0
BEGIN
RAISERROR 44444 'El campo "Observación" debe contener un valor'
ROLLBACK TRANSACTION
END
/* * IMPEDIR INSERCIONES SI NO HAY NINGUNA CLAVE COINCIDENTE EN 'Oficinas' */
IF (SELECT COUNT(*) FROM inserted) !=
(SELECT COUNT(*) FROM Oficinas, inserted WHERE (Oficinas.CodOficina = inserted.CodOficina))
BEGIN
RAISERROR 44447 'No puede agregarse ni modificarse el registro. Las reglas de integridad referencial requieren un registro relacionado en la tabla ''Oficinas''.'
ROLLBACK TRANSACTION
END

/* * IMPEDIR INSERCIONES SI NO HAY NINGUNA CLAVE COINCIDENTE EN 'Sucursales' */
IF (SELECT COUNT(*) FROM inserted) !=
(SELECT COUNT(*) FROM Sucursales, inserted WHERE (Sucursales.CodSucursal = inserted.Sucursal))
BEGIN
RAISERROR 44447 'No puede agregarse ni modificarse el registro. Las reglas de integridad referencial requieren un registro relacionado en la tabla ''Sucursales''.'
ROLLBACK TRANSACTION
END

/* * IMPEDIR INSERCIONES SI NO HAY NINGUNA CLAVE COINCIDENTE EN 'TiposProductos' */
IF (SELECT COUNT(*) FROM inserted) !=
(SELECT COUNT(*) FROM TiposProductos, inserted WHERE (TiposProductos.TipoProducto = inserted.TipoProducto))
BEGIN
RAISERROR 44447 'No puede agregarse ni modificarse el registro. Las reglas de integridad referencial requieren un registro relacionado en la tabla ''TiposProductos''.'
ROLLBACK TRANSACTION
END

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE TRIGGER "Productos_DTrig" ON dbo.Productos FOR DELETE AS
SET NOCOUNT ON
/* * EXTENDER ELIMINACIONES EN CASCADA A 'Movimientos_Productos' */
DELETE Movimientos_Productos FROM deleted, Movimientos_Productos WHERE deleted.Sucursal = Movimientos_Productos.Sucursal AND deleted.TipoProducto = Movimientos_Productos.TipoProducto AND deleted.Clave1 = Movimientos_Productos.Clave1 AND deleted.Clave2 = Movimientos_Productos.Clave2

/* * EXTENDER ELIMINACIONES EN CASCADA A 'RelCteProd' */
DELETE RelCteProd FROM deleted, RelCteProd WHERE deleted.Sucursal = RelCteProd.Sucursal AND deleted.TipoProducto = RelCteProd.TipoProducto AND deleted.Clave1 = RelCteProd.Clave1 AND deleted.Clave2 = RelCteProd.Clave2

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO