al compilar el trigger no me bota error.
al tratar de actualizar un nombre con un valor vacío, me bota el error esperado, osea hasta ahí todo bien.
Pero cuando quiero actualizar el nombre con un valor normal , como por ejemplo 'carlos', me bota el siguiente error
"los valores de las filas actualizados no la convierten en única o alteran varias filas"
Debo aclarar que quiero despejar las dudas para fines didácticos, se que puedo usar un AFTER UPDATE y después un rollback, pero deseo saber por que este triger en particular me bota ese mensaje
Muchas gracias por la colaboracion.
acá el ejemplo.
Creación de la tabla, con un ID autoincremental, el cual deber ser único para cada registro
USE [prueba]
GO
/****** Object: Table [dbo].[empleados] Script Date: 03/02/2012 19:25:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[empleados](
[id] [int] IDENTITY(1,1) NOT NULL,
[nombre] [varchar](50) NULL,
[apellido] [varchar](50) NULL,
[sueldo] [numeric](18, 0) NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
y el triger mencionado.
USE prueba;
GO
IF OBJECT_ID ('gatilloup','TR') IS NOT NULL
DROP TRIGGER gatilloup;
GO
CREATE TRIGGER gatilloup ON prueba.dbo.empleados
INSTEAD OF UPDATE
AS
DECLARE @nombre nvarchar(50), @apellido nvarchar(50), @id int;
IF (SELECT nombre FROM inserted) = ''
BEGIN
RAISERROR ('No se puede actualziar a un nombre vacio.', 16, 1);
RETURN
END
ELSE
BEGIN
UPDATE prueba.dbo.empleados
SET nombre = I.nombre,
apellido = I.apellido
FROM prueba.dbo.empleados E, inserted I
WHERE E.id = I.id
RETURN
END
GO