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

Problema con trigger o desencadenador

Estas en el tema de Problema con trigger o desencadenador en el foro de SQL Server en Foros del Web. Buenas a todos los integrantes del Foro!!! Tengo un problema en una Tabla de una Base de Datos que me está triplicando el ingreso de ...
  #1 (permalink)  
Antiguo 28/09/2011, 09:52
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Problema con trigger o desencadenador

Buenas a todos los integrantes del Foro!!!
Tengo un problema en una Tabla de una Base de Datos que me está triplicando el ingreso de los Datos a través de una Consulta.
La situación es la siguiente, tengo una BD que tiene varias Tablas, entre ellas hay tres Tablas que son las principales; Clientes - RelCteProd y Productos.
En las mismas se realizan Altas masivas y para ello hago un Insert en cada una de ellas. l tema es que en la Tabla Clientes y Productos cuando realizo el Insert me triplica los datos.

En el Modelo de Datos se crearon las Relaciones entre las Tablas para evitar Clientes duplicados y/o Productos duplicados.
He controlado todos los Desencadenadores y NO puedo encontrar el que me controle los INSERT.

Alguna sugerencia o colaboración para detectar el problema...???

Aqui los paso los Script de las Tablas en cuestión y los Desencadenadores.

Muchas Gracias.-

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Movimientos_Clientes_Clientes]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Movimientos_Clientes] DROP CONSTRAINT FK_Movimientos_Clientes_Clientes
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_RelCteProd_Clientes]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[RelCteProd] DROP CONSTRAINT FK_RelCteProd_Clientes
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_Movimientos_Productos_Productos]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[Movimientos_Productos] DROP CONSTRAINT FK_Movimientos_Productos_Productos
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_RelCteProd_Productos]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[RelCteProd] DROP CONSTRAINT FK_RelCteProd_Productos
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Clientes_UTrig]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[Clientes_UTrig]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Clientes_ITrig]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[Clientes_ITrig]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Clientes_DTrig]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[Clientes_DTrig]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Productos_UTrig]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[Productos_UTrig]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Productos_ITrig]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[Productos_ITrig]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Productos_DTrig]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[Productos_DTrig]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Clientes]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Clientes]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[RelCteProd]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[RelCteProd]
GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Productos]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[Productos]
GO

CREATE TABLE [dbo].[Clientes] (
[Id_Cliente] [numeric](18, 0) IDENTITY (1, 1) NOT NULL ,
[TipoDoc] [smallint] NOT NULL ,
[NroDocumento] [numeric](18, 0) NOT NULL ,
[Apellido] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Nombre] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Nro_Cliente] [numeric](18, 0) NULL ,
[FechaAlta_Cliente] [datetime] NULL ,
[FechaBaja_Cliente] [datetime] NULL ,
[FechaProceso_Cliente] [datetime] NULL ,
[upsize_ts] [timestamp] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[RelCteProd] (
[Id_Cliente] [numeric](18, 0) NOT NULL ,
[Id_Produto] [numeric](18, 0) NOT NULL ,
[Sucursal] [int] NULL ,
[TipoProducto] [smallint] NULL ,
[Clave1] [numeric](18, 0) NULL ,
[Clave2] [numeric](18, 0) NULL ,
[TipoDoc] [smallint] NULL ,
[NroDocumento] [numeric](18, 0) NULL ,
[upsize_ts] [timestamp] NULL
) ON [PRIMARY]
GO

CREATE TABLE [dbo].[Productos] (
[Id_Producto] [numeric](18, 0) IDENTITY (1, 1) NOT NULL ,
[Sucursal] [int] NOT NULL ,
[TipoProducto] [smallint] NOT NULL ,
[Clave1] [numeric](18, 0) NULL ,
[Clave2] [numeric](18, 0) NULL ,
[Clave3] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Clave4] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Producto] [numeric](18, 0) NULL ,
[FechaAlta_Producto] [datetime] NULL ,
[FechaBaja_Producto] [datetime] NULL ,
[FechaProceso_Producto] [datetime] NULL ,
[upsize_ts] [timestamp] NULL
) ON [PRIMARY]
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE TRIGGER "Clientes_UTrig" ON dbo.Clientes FOR UPDATE AS
SET NOCOUNT ON

/* * REGLA DE VALIDACIÓN DEL CAMPO 'NroDocumento' */
IF (SELECT Count(*) FROM inserted WHERE NOT (NroDocumento>0)) > 0
BEGIN
RAISERROR 44444 'El campo "Nro. de Documento" debe contener datos'
ROLLBACK TRANSACTION
END
ELSE
/* * REGLA DE VALIDACIÓN DEL CAMPO 'Apellido' */
IF (SELECT Count(*) FROM inserted WHERE NOT (Apellido Is Not Null And Apellido>' ')) > 0
BEGIN
RAISERROR 44444 'El campo "Apellido" debe contener datos'
ROLLBACK TRANSACTION
END
ELSE
/* * 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
/* * EXTENDER ACTUALIZACIONES EN CASCADA A 'Movimientos_Clientes' */
IF UPDATE(TipoDoc) OR UPDATE(NroDocumento)
BEGIN
UPDATE Movimientos_Clientes
SET Movimientos_Clientes.TipoDoc = inserted.TipoDoc , Movimientos_Clientes.NroDocumento = inserted.NroDocumento
FROM Movimientos_Clientes, deleted, inserted
WHERE deleted.TipoDoc = Movimientos_Clientes.TipoDoc AND deleted.NroDocumento = Movimientos_Clientes.NroDocumento
END
/* * IMPEDIR ACTUALIZACIONES SI NO HAY NINGUNA CLAVE COINCIDENTE EN 'Oficinas' */
IF UPDATE(CodOficina)
BEGIN
IF (SELECT COUNT(*) FROM inserted) !=
(SELECT COUNT(*) FROM Oficinas, inserted WHERE (Oficinas.CodOficina = inserted.CodOficina))
BEGIN
RAISERROR 44446 'No puede agregarse ni modificarse el registro. Las reglas de integridad referencial requieren un registro relacionado en la tabla ''Oficinas''.'
ROLLBACK TRANSACTION
END
END
  #2 (permalink)  
Antiguo 28/09/2011, 09:53
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema con trigger o desencadenador

Aqui va el resto del Script:


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

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE TRIGGER "Clientes_ITrig" ON dbo.Clientes FOR INSERT AS
SET NOCOUNT ON

/* * REGLA DE VALIDACIÓN DEL CAMPO 'NroDocumento' */
IF (SELECT Count(*) FROM inserted WHERE NOT (NroDocumento>0)) > 0
BEGIN
RAISERROR 44444 'El campo "Nro. de Documento" debe contener datos'
ROLLBACK TRANSACTION
END
ELSE
/* * REGLA DE VALIDACIÓN DEL CAMPO 'Apellido' */
IF (SELECT Count(*) FROM inserted WHERE NOT (Apellido Is Not Null And Apellido>' ')) > 0
BEGIN
RAISERROR 44444 'El campo "Apellido" debe contener datos'
ROLLBACK TRANSACTION
END
ELSE
/* * 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 'TiposDocumentos' */
IF (SELECT COUNT(*) FROM inserted) !=
(SELECT COUNT(*) FROM TiposDocumentos, inserted WHERE (TiposDocumentos.TipoDoc = inserted.TipoDoc))
BEGIN
RAISERROR 44447 'No puede agregarse ni modificarse el registro. Las reglas de integridad referencial requieren un registro relacionado en la tabla ''TiposDocumentos''.'
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 "Clientes_DTrig" ON dbo.Clientes FOR DELETE AS
SET NOCOUNT ON
/* * EXTENDER ELIMINACIONES EN CASCADA A 'Movimientos_Clientes' */
DELETE Movimientos_Clientes FROM deleted, Movimientos_Clientes WHERE deleted.TipoDoc = Movimientos_Clientes.TipoDoc AND deleted.NroDocumento = Movimientos_Clientes.NroDocumento

/* * EXTENDER ELIMINACIONES EN CASCADA A 'RelCteProd' */
DELETE RelCteProd FROM deleted, RelCteProd WHERE deleted.TipoDoc = RelCteProd.TipoDoc AND deleted.NroDocumento = RelCteProd.NroDocumento

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO

CREATE TRIGGER "Productos_UTrig" ON dbo.Productos FOR UPDATE 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 ACTUALIZACIONES SI NO HAY NINGUNA CLAVE COINCIDENTE EN 'Oficinas' */
IF UPDATE(CodOficina)
BEGIN
IF (SELECT COUNT(*) FROM inserted) !=
(SELECT COUNT(*) FROM Oficinas, inserted WHERE (Oficinas.CodOficina = inserted.CodOficina))
BEGIN
RAISERROR 44446 'No puede agregarse ni modificarse el registro. Las reglas de integridad referencial requieren un registro relacionado en la tabla ''Oficinas''.'
ROLLBACK TRANSACTION
END
END
/* * IMPEDIR ACTUALIZACIONES SI NO HAY NINGUNA CLAVE COINCIDENTE EN 'Sucursales' */
IF UPDATE(Sucursal)
BEGIN
IF (SELECT COUNT(*) FROM inserted) !=
(SELECT COUNT(*) FROM Sucursales, inserted WHERE (Sucursales.CodSucursal = inserted.Sucursal))
BEGIN
RAISERROR 44446 'No puede agregarse ni modificarse el registro. Las reglas de integridad referencial requieren un registro relacionado en la tabla ''Sucursales''.'
ROLLBACK TRANSACTION
END
END

/* * IMPEDIR ACTUALIZACIONES SI NO HAY NINGUNA CLAVE COINCIDENTE EN 'TiposProductos' */
IF UPDATE(TipoProducto)
BEGIN
IF (SELECT COUNT(*) FROM inserted) !=
(SELECT COUNT(*) FROM TiposProductos, inserted WHERE (TiposProductos.TipoProducto = inserted.TipoProducto))
BEGIN
RAISERROR 44446 'No puede agregarse ni modificarse el registro. Las reglas de integridad referencial requieren un registro relacionado en la tabla ''TiposProductos''.'
ROLLBACK TRANSACTION
END
END
  #3 (permalink)  
Antiguo 28/09/2011, 09:54
 
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
  #4 (permalink)  
Antiguo 28/09/2011, 09:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con trigger o desencadenador

como estas haciendo el insert? desde una aplicacion o directamente desde el MDB?

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 28/09/2011, 10:07
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema con trigger o desencadenador

Gracias por responder..!!! El Insert lo hago desde una aplicación en PHP y a través de un Procedimeito Almacenado o bien con Consultas SQL también desde PHP. En ambos casos se produce el mimo problema.

Saludos.
  #6 (permalink)  
Antiguo 28/09/2011, 10:13
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Problema con trigger o desencadenador

Una duda mas, ¿Que VERSION es tu motor de base de datos?
__________________
MCTS Isaias Islas
  #7 (permalink)  
Antiguo 28/09/2011, 10:14
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
Pregunta Respuesta: Problema con trigger o desencadenador

Estoy trabajando con SQl Sever 2000.

Saludos.
  #8 (permalink)  
Antiguo 28/09/2011, 10:18
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Problema con trigger o desencadenador

Si, ya es una version antigua.

¿Porque no cambias tus triggers por CONSTRAINTS?

http://www.mssqlcity.com/Articles/Ge...onstraints.htm
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 28/09/2011, 10:23
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema con trigger o desencadenador

No he utilizado Constraints. Los Triggers se crearon cuando cree las Relaciones entre las Tablas para establecer las Relaciones entre las mismas. Cual es la diferencias y las ventajas entre Triggers y Constraints...??

Saludos.
  #10 (permalink)  
Antiguo 28/09/2011, 10:40
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Problema con trigger o desencadenador

ya has probado haciendo un insert into tabla directamente desde el manejador de base de datos, un constraint es una restriccion para que si cierto dato relacionado no existe en alguna de las tablas relacionadas entonces no te deje insertar por ejemplo tenemos paises y ciudades, si intentamos insertar la ciudad de Roma en el pais italia e italia no existe en la tabla de paises no te va a dejar hacerlo, en este caso los triggers a como veo que los estas usando son para validar que no existan valores NULOS dentro de tus tablas cosa que podrias hacer con los constraints.

Saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 30/09/2011, 07:49
 
Fecha de Ingreso: marzo-2010
Mensajes: 22
Antigüedad: 14 años, 1 mes
Puntos: 0
De acuerdo Respuesta: Problema con trigger o desencadenador

Estimados: Muchas gracias por su colaboración, ya solucioné el tema. Modifiqué el diseño de las Primary Key.

Saludos.

Etiquetas: desencadenador, fecha, select, sql, tabla, trigger, campos
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 15:16.