2017-03-23 4 views
-1

Pouvez-vous me suggérer de créer une table en commençant par les chiffres de postgresql.Créer une table, en commençant par digit dans postgresql

+1

Ce n'est pas le cas. "" Les identifiants SQL et les mots clés doivent commencer par une lettre (az, mais aussi des lettres avec des signes diacritiques et des lettres non latines) ou un trait de soulignement (_). "- https://www.postgresql.org/docs/9.0 /static/sql-syntax-lexical.html – David

+0

En fait, je peux créer une table avec des guillemets doubles "5258_emp" mais quand je veux stocker la valeur dans cette table .. il montre l'erreur. – Ashish

+0

'" En fait, je peux créer une table avec des guillemets doubles, par exemple "5258_emp" "' - On dirait que vous avez répondu à votre propre question alors. Tant que vous vous souvenez toujours d'inclure vos identifiants, cela devrait fonctionner. Bien que ce ne soit toujours pas la meilleure idée. – David

Répondre

1

utilisation des guillemets doubles, par exemple:

t=# create table "42 Might be not The be$t idea" (i serial); 
CREATE TABLE 
t=# \d+ "42 Might be not The be$t idea" 
              Table "public.42 Might be not The be$t idea" 
Column | Type |         Modifiers         | Storage | Stats target | Descript 
ion 
--------+---------+-----------------------------------------------------------------------------+---------+--------------+--------- 
---- 
i  | integer | not null default nextval('"42 Might be not The be$t idea_i_seq"'::regclass) | plain |    | 

S'il vous plaît regarder de près ce qu'il mène. Généralement en utilisant des cas mixtes, les caractères spéciaux et la relation de départ du nombre est gardé une mauvaise pratique. Malgré le fait que Postgres comprend et travaille avec de tels noms de relation, vous avez un risque de rencontrer le bug avec d'autres logiciels.

Sans expérience, vous vous tirerez très probablement dans le pied. Par exemple pg_dump -t "badName" ne fonctionnera pas. Bash comprendra les guillemets comme propres - et il est censé fonctionner de cette façon. Vous devez donc spécifier pg_dump -t '"badName"' pour trouver la table. Et si vous ne parvenez pas à trouver une table, vous avez de la chance. Le désastre est quand vous avez badname et Badname dans le même schéma.

Le fait que ce soit faisable ne signifie pas que vous devriez sauter dans l'utiliser.

+0

J'ai délibérément créé une table avec un numéro de série (de sorte que le nom de la séquence lui-même) pour montrer à quel point il semble. –

+0

vous avez raison - j'aurais dû mettre un avertissement. Donc j'ai fait. –