Les pongo un ejemplo de uno de los stored procedures ya realizado(llave primaria simple)
Código SQL:
Ver original
CREATE PROCEDURE SP_TipoTel @TipoTel_IDTipoTel INT, @TipoTel_Descripcion NVARCHAR(50), @error INT AS BEGIN SET @error = 1 IF ((LEN(@TipoTel_IDTipoTel) > 0) AND (LEN(@TipoTel_Descripcion) > 0)) BEGIN SET @error = 2 IF((SELECT COUNT(*) FROM TipoTel WHERE (ID_TipoTel = @TipoTel_IDTipoTel)) = 0) BEGIN SET @error = 4 IF((SELECT COUNT(*) FROM TipoTel WHERE (Descripcion = @TipoTel_Descripcion)) = 0) BEGIN SET @error = 0 INSERT INTO TipoTel VALUES (@TipoTel_IDTipoTel, @TipoTel_Descripcion) END END END IF (@error > 0) BEGIN EXEC Mensaje @error END END GO
Las validaciones son para que en caso de que existan errores como (valoresnulos(1)>llaveprimariarepetida(2)>llavefor anearepetida(3)>llavealternarepetida(4)) en caso de ser uno de esos se manda llamar un stored procedure que imprime un mensaje con el error.
Ahora lo que yo quiero es validar de la misma manera que arriba una llave primaria compuesta, este es el SP:
Código SQL:
Ver original
CREATE PROCEDURE SP_EmpleadoTipoTel @EmpleadoTipoTel_IDTipoTel INT, @EmpleadoTipoTel_IDEmpleado INT, @EmpleadoTipoTel_IDSucursal INT, @EmpleadoTipoTel_Telefono NVARCHAR(50), @error INT AS BEGIN SET @error = 1 IF((LEN(@EmpleadoTipoTel_IDTipoTel) > 0) AND (LEN(@EmpleadoTipoTel_IDEmpleado) > 0) AND (LEN(@EmpleadoTipoTel_IDSucursal) > 0) AND (LEN(@EmpleadoTipoTel_Telefono) > 0)) BEGIN SET @error = 2 -- aquí es la parte de la validación de la llave primaria compuesta --(¿alguna sugerencia de validar esto usando IF?)la llave primaria --esta compuesta por: -- @EmpleadoTipoTel_IDTipoTel,(ID_TipoTel) -- @EmpleadoTipoTel_IDEmpleado,(ID_Empleado) -- @EmpleadoTipoTel_IDSucursal,(ID_Sucursal) -- lo encerrado en () son los nombres de los campos en las tablas BEGIN SET @error = 3 IF((SELECT COUNT(*) FROM Empleado WHERE (ID_Empleado = @EmpleadoTipoTel_IDEmpleado)) != 0 AND (SELECT COUNT(*) FROM Sucursal WHERE (ID_Sucursal = @EmpleadoTipoTel_IDSucursal)) != 0) BEGIN INSERT INTO Empleado_TipoTel VALUES (@EmpleadoTipoTel_IDTipoTel, @EmpleadoTipoTel_IDEmpleado, @EmpleadoTipoTel_IDSucursal, @EmpleadoTipoTel_Telefono) SET @error = 0 END END GO
Cualquier cosa que no se entienda, aqui estare checando para responder.
Espero alguien me pueda echar la mano con eso, incluso si hay sugerencias o mejoras o otros puntos de vista para realizar esto son tambien bienvenidos.
Muchas gracias de antemando, saludos.
---------------------
Bueno encontre mi respuesta, bastante simple que hasta verguenza me da xD
Código SQL:
Ver original
IF((SELECT COUNT(*) FROM Empleado WHERE ((ID_TipoTel = @EmpleadoTipoTel_IDTipoTel) AND (ID_Empleado = @EmpleadoTipoTel_IDEmpleado) AND (ID_Sucursal = @EmpleadoTipoTel_IDSucursal))) != 0)