Ceci est la suite de ma précédente question sql update for dynamic row numberObtenir de la ligne dont les valeurs ne sont pas mis à jour pendant la mise à jour de la ligne multiple
Cette fois, j'ai une condition mise à jour. J'ai 2 tables CraftTypes & EmployeeCraftTypes.
J'ai besoin de mettre à jour plusieurs lignes dans le CraftType Table et j'ai pu le mettre à jour selon la réponse fournie par TheGameiswar
Maintenant, il y a une modification de l'exigence.
Dans le tableau CraftTypes, il est une référence clé étrangère pour la colonne CraftTypeKey avec la table EmployeeCraftsTypes.
S'il existe une entrée pour CraftTypeKey dans les EmployeeCrafttypes table, puis la ligne ne doit pas être mis à jour. Egalement les CraftTypeKey dont les valeurs de ligne ne sont pas mises à jour doivent être obtenues pour renvoyer l'état FK_restriction des lignes.
C'est la requête sql que j'utilise.
CREATE TYPE [DBO].[DEPARTMENTTABLETYPE] AS TABLE
(DepartmentTypeKey SMALLINT, DepartmentTypeName VARCHAR(50),DepartmentTypeCode VARCHAR(10) , DepartmentTypeDescription VARCHAR(128))
ALTER PROCEDURE [dbo].[usp_UpdateDepartmentType]
@DEPARTMENTDETAILS [DBO].[DEPARTMENTTABLETYPE] READONLY
AS
BEGIN
SET NOCOUNT ON;
DECLARE @rowcount1 INT
BEGIN
BEGIN TRY
BEGIN TRANSACTION
UPDATE D1
SET
D1.[DepartmentTypeName]=D2.DepartmentTypeName
,D1.[DepartmentTypeCode]=D2.DepartmentTypeCode
,D1.[DepartmentTypeDescription]=D2.DepartmentTypeDescription
FROM
[dbo].[DepartmentTypes] D1
INNER JOIN
@DEPARTMENTDETAILS D2
ON
D1.DepartmentTypeKey=D2.DepartmentTypeKey
WHERE
D2.[DepartmentTypeKey] not in (select 1 from [dbo].[EmployeeDepartment] where [DepartmentTypeKey]=D2.DepartmentTypeKey)
SET @[email protected]@ROWCOUNT
COMMIT
END TRY
BEGIN CATCH
SET @ROWCOUNT1=0
ROLLBACK TRAN
END CATCH
IF @rowcount1 =0
SELECT -174;
ELSE
SELECT 100;
END
END
S'il vous plaît Aide Et Merci à l'avance