Telle est la définition du type énuméré:PostgreSQL: changer une colonne de type ENUM
CREATE TYPE khstate AS ENUM ('none', 'form', 'test', 'finished');
Maintenant, dans une table de base de données J'ai une ligne avec des id '(type SERIAL) colonnes et « état » (tapez khstate). La valeur de la colonne 'id' est 100004, et la valeur de la colonne 'state' est 'none'. Comment puis-je le changer pour, par exemple, «former»? La définition de la table est la suivante.
CREATE TABLE IF NOT EXISTS khs (
id SERIAL UNIQUE,
state khstate DEFAULT 'none',
PRIMARY KEY (id)
);
J'ai essayé des requêtes telles que
UPDATE tablename SET state = 'form' WHERE id = 100004;
ERREUR: valeur d'entrée non valide pour ENUM khstate: "forme"
UPDATE tablename SET state = 'form'::khstate WHERE id = 100004;
ERREUR: valeur d'entrée non valide pour ENUM khstate: « forme "
mais sans succès. J'utilise le dernier BitNami LAPPstack, donc la version de PostgreSQL est 9.1.1.
Je n'ai ajouté aucune contrainte RULE ou TRIGGER, et je n'ai pas utilisé de transactions explicitement.
J'ai essayé de trouver une solution à google, mais tout ce que j'ai pu trouver, ce sont des questions sur la façon de changer le type enum lui-même, plutôt que sur la valeur d'une colonne.
"mais en vain." veux dire? –
Les deux formes fonctionnent ici. Modifiez votre question pour inclure l'instruction CREATE TABLE et le message d'erreur réel. (Copiez et collez, ne retapez pas.) –
Curiosité - après avoir exécuté vos instructions UPDATE, avez-vous commis les transactions? –