J'ai une exigence dans laquelle j'ai besoin de voir si cette clé existe déjà. S'il existe déjà, mettez à jour les données en fonction de la clé, sinon insérez de nouvelles données.pourquoi ce comportement avec int dans SQL Server 2005
L'approche que je pris est
DECLARE @Tracking_Id INT
SELECT @Tracking_Id = Tracking_Id
FROM DOCUMENT_TRACKING
WHERE Secondary_Document_Id = @Secondary_Document_Id
AND primary_Document_Id = @Primary_Document_Id
IF (@Tracking_Id = 0)
BEGIN
INSERT INTO DOCUMENT_TRACKING
(
Primary_Document_Id,
Secondary_Document_Id,
Tracking_Result,
Comment,
Created_By,
Created_Dt,
Updated_By,
Updated_Dt
)
VALUES (
@Primary_Document_Id,
@Secondary_Document_Id,
@TrackingResult,
@Comments,
@User_ID,
GETDATE(),
@User_ID,
GETDATE()
)
END
ELSE
BEGIN
SELECT @Tracking_Id = Tracking_Id
FROM DOCUMENT_TRACKING
WHERE Secondary_Document_Id = @Secondary_Document_Id
AND primary_Document_Id = @Primary_Document_Id
UPDATE DOCUMENT_TRACKING
SET tracking_result = @TrackingResult,
Comment = @Comments,
Updated_By = @User_ID,
Updated_Dt = GETDATE()
WHERE Tracking_Id = @Tracking_Id
END
Maintenant, quand il n'y a pas de ligne correspondant à ma condition dans la base de données, que ce soit @Tracking_Id doit être 0 ou « » ou nul, mais il ne montre rien quand je le compare avec l'une de ces choses.
Je ne veux pas utiliser l'approche de comptage, puis comparer avec 0 ou plus grand que cela. Comment puis-je faire face à ce scenerio.
non ce ne fonctionne pas avec isnull(). – Rohit