Ayuda, INSERT con trigger!!!!
Publicado por Christian D. (6 intervenciones) el 17/05/2005 00:17:30
Hola, necesito validar mediante un trigger en SQL Server 2000 que el largo de un determinado campo no supere por los 1000 caracteres, no puedo hacerlo por código del sw ya q' ya se encuentra programado y compilado, así que lo estoy haciendo mediante un trigger. El campo está definido en la base de datos como varchar de 1000
Lo que estoy probando es es un trigger que hace lo siguiente, si el valor que se quiere insertar en la tabla supera el largo máximo permitido (1000 caracteres) realiza un ROLLBACK de la transacción.:
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'muylargo' AND type = 'TR')
DROP TRIGGER muylargo
GO
CREATE TRIGGER muylargo ON discado FOR INSERT
AS
SET ANSI_WARNINGS OFF
DECLARE @rc AS INT
SET @rc = (select len(inserted.observaciones) from inserted )
IF @rc > 1000
BEGIN
ROLLBACK TRAN
END
Pero no funciona ya que cualquier valor superior a 1000 que se encuentre en la condición "IF @rc > 1000" del trigger aparece esto: "string or binary data would be truncated". En el fondo no está tomando en cuenta el trigger.Es lo mismo que aparece si no utilizo el trigger, sin embargo, si en la condición del trigger pongo "IF @rc > 900" el trigger funciona sin problemas. Funciona bien para un valor en la condición siempre menor que el máximo definido del campo.
Por favor necesito que alguien me ayude con esto!!!.
Gracias.
Lo que estoy probando es es un trigger que hace lo siguiente, si el valor que se quiere insertar en la tabla supera el largo máximo permitido (1000 caracteres) realiza un ROLLBACK de la transacción.:
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'muylargo' AND type = 'TR')
DROP TRIGGER muylargo
GO
CREATE TRIGGER muylargo ON discado FOR INSERT
AS
SET ANSI_WARNINGS OFF
DECLARE @rc AS INT
SET @rc = (select len(inserted.observaciones) from inserted )
IF @rc > 1000
BEGIN
ROLLBACK TRAN
END
Pero no funciona ya que cualquier valor superior a 1000 que se encuentre en la condición "IF @rc > 1000" del trigger aparece esto: "string or binary data would be truncated". En el fondo no está tomando en cuenta el trigger.Es lo mismo que aparece si no utilizo el trigger, sin embargo, si en la condición del trigger pongo "IF @rc > 900" el trigger funciona sin problemas. Funciona bien para un valor en la condición siempre menor que el máximo definido del campo.
Por favor necesito que alguien me ayude con esto!!!.
Gracias.
Valora esta pregunta


0