209 votes

Pourquoi ne puis-je pas utiliser un alias dans une instruction DELETE ?

Dans SQL Server Compact Edition dans Visual Studio 2010 (peut-être SQL Server et SQL en général, je ne sais pas), cette commande fonctionne :

DELETE FROM foods WHERE (name IN ('chickens', 'rabbits'))

mais cette commande produit une erreur de : Error near identifier f. Expecting OUTPUT.

DELETE FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))

307voto

Aaron Bertrand Points 116343

Pour aliaser la table, il faudrait dire :

DELETE f FROM dbo.foods AS f WHERE f.name IN (...);

Je ne vois pas l'intérêt de l'aliasing pour ce cas précis. DELETE d'autant plus que (du moins IIRC) cela n'est plus conforme à la stricte ANSI. Mais oui, comme le suggèrent les commentaires, cela peut être nécessaire pour d'autres formes de requêtes (par exemple la corrélation).

94voto

usr Points 74796

L'instruction delete a une syntaxe étrange. Elle se présente comme suit :

DELETE f FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X