EXISTS
(of NOT EXISTS
) is speciaal ontworpen om te controleren of iets bestaat en zou daarom de beste optie moeten zijn (en zijn). Het stopt op de eerste rij die overeenkomt, dus het vereist geen TOP
clausule en het selecteert eigenlijk geen gegevens, dus er is geen overhead in de grootte van kolommen. U kunt veilig SELECT *
. gebruiken hier - niet anders dan SELECT 1
, SELECT NULL
of SELECT AnyColumn
... (je kunt zelfs een ongeldige uitdrukking gebruiken zoals SELECT 1/0
en het zal niet breken).
IF EXISTS (SELECT * FROM Products WHERE id = ?)
BEGIN
--do what you need if exists
END
ELSE
BEGIN
--do what needs to be done if not
END