J'ai un très basique UPDATE SQL
-
UPDATE HOLD_TABLE Q SET Q.TITLE = 'TEST' WHERE Q.ID = 101;
Cette requête fonctionne correctement dans Oracle
, Derby
, MySQL
- mais échoue dans SQL Server 2008 avec l'erreur suivante:
"Msg 102, Niveau 15, Etat 1, Ligne 1 Syntaxe incorrecte près de 'Q'."
Si je supprime toutes les occurrences de l'alias, "Q" à partir de SQL, cela fonctionne.
Mais je dois utiliser l'alias.
La syntaxe d'utilisation d'un alias dans une instruction de mise à jour sur SQL Server est la suivante:
UPDATE Q
SET Q.TITLE = 'TEST'
FROM HOLD_TABLE Q
WHERE Q.ID = 101;
L'alias ne devrait pas être nécessaire ici cependant.
Vous pouvez toujours adopter l'approche CTE , (Expression tabulaire commune).
;WITH updateCTE AS
(
SELECT ID, TITLE
FROM HOLD_TABLE
WHERE ID = 101
)
UPDATE updateCTE
SET TITLE = 'TEST';