Le Jeudi 6 Juin 2002 11:59, Philippe BEAU a écrit :
> Question toute simple,
>
> une requete Postgresql de ce genre est-elle correcte ?
>
> BEGIN WORK
> UPDATE variables SET l32_value='toto' WHERE userid='19'
> COMMIT
>
> ?
>
> Philippe
D'un point de vue strictement syntaxe SQL, il n'y a aucun problème (si
'variables' est bien un nom de table et non pas un nom de colonne d'une
table).
Maintenant si ces lignes sont stockées dans un fichier soumis à exécution par
un commande du style :
> psql -d <NomBase> -f <fichier_requête>
le petit problème résulte du fait qu'il n'y a pas de délimiteur entre les
trois ordres sql 'Begin,', 'Update' et 'Commit'. Dans le cas simple de
l'exemple, chacun des ordres n'occupant qu'une seule ligne, il suffit de le
préciser à 'psql' par l'option '-S' :
> psql -d <NomBase> -f <fichier_requête> -S
Si la commande 'Update' avait écrit sur plusieurs lignes :
Update TABLE
set variable_1 = <valeur1> ,
variable_2 = <valeur2> ,
...
variable_n = <valeurn>
where ...
La seule solution aurait été de placer le caractère de terminaison d'ordre
Sql ';' de 'psql' à la fin de chacun des ordres Sql.
Remarque pour les personnes très intéressées par PostgreSql :
La traduction en français du livre sur PostgreSql écrit par
Ewald Geschwinde & Hans-Jurgen Schoning
est disponible aux éditions CampusPress, au prix de 53Euros
(mais quand on aime on ne compte pas)
Le titre exact est :
PostgreSql Guide du Développeur