UTNianos

Versión completa: [gestion de datos] Duda sobre ejercicio de final
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Hola a todos, no sé que es lo que se espera que hagamos en el siguiente ejercicio. Un trigger ante Insert y Update y que levante un raiseError si hay otro con el mismo DNI? que rollbackee la transacción? Me dan una mano por favor? Mil gracias!!!


Cita:CLIENTES
IdCliente (pk) int NOT NULL
Nombre char(100) null
Apellido char(100) null
DNI number null
Mail char(50) null
Genero char (1) null
Localidad char(50) null

Validar sin modificar las estructuras vigentes, que si el valor del campo DNI posee datos este no puede ser igual al de otro cliente, se sabe de antemano que falta el valor de DNI para más de 100 clientes.


CREATE TRIGGER SuperTrigger ON CLIENTES FOR INSERT,UPDATE
AS
IF EXISTS
(
SELECT 1 /*El 1 es no más por poner algo, podrías ponerle lo que quieras, total el EXISTS va a reaccionar con cualquier registro*/
FROM Inserted I /*Tabla que contiene lo que acaban de insertar o updatear*/
JOIN CLIENTES C
ON I.DNI=C.DNI
AND C.IdCliente<>I.IdCliente /*Esto es para que no tire error si es un update y detecta que tiene el mismo dni que sí mismo*/
)
BEGIN
RAISERROR 'Existe otro cliente con ese DNI' /*Creo que la funcion llevaba dos argumentos más, pero no sé qué tanto piden */
ROLLBACK TRAN
END


Sos muy grosa! Me contestaste enseguida y me re sirvió.

Muchisimas gracias!
URLs de referencia