J'ai un résultat étrange lors de la création d'une nouvelle table dans HSQLDB. Dans la documentation de HSQLDB, "user" est un mot-clé, normalement, nous ne pouvons pas utiliser cette valeur pour le nom de la table ou le nom de la colonne, à moins qu'elle ne soit entre guillemets.Comportement étrange en utilisant le mot-clé de HSQLDB
Cependant, je peux créer une table de base de données avec le nom "USER" et une table de base de données DATA_RESULT avec un nom de colonne "user", sans double-citation du mot-clé.
Un problème survient lors de la lecture des données de la base de données. Par exemple, lorsque j'exécute: "select * from DATA_RESULT"
et lisez la valeur de "user" à partir du ResultSet, cela fonctionne.
Si j'exécute "select user from DATA_RESULT"
ou "SELECT * from DATA_RESULT where user = 1"
, une erreur se produit. L'instruction sql n'est pas exécutée correctement, ResultSet.next() renvoie toujours un faux. En outre, à partir de Lists of Keywords for HSQLDB, il est indiqué HyperSQL has two modes of operation, which are selected with the SET DATABASE SQL NAMES { TRUE | FALSE } to allow or disallow the keywords as identifiers. The default mode is FALSE and allows the use of most keywords as identifiers
, il n'est pas précisé si "user" peut être utilisé comme identifiant. J'utilise HSQLDB 2.0.0.
Il est assez déroutant. Est-ce que quelqu'un sait ce qui se passe ici?
Merci d'avance! Toute suggestion serait utile. USER est une fonction permettant d'obtenir le nom de l'utilisateur actuel.