2012-03-05 1 views
3

J'ai une base de données Firebird avec plusieurs tables. Il y a plusieurs colonnes qui ont été ajoutées lors de la base de données a été créé commeSupprimer le jeu de caractères UNICODE_FSS d'une colonne d'une base de données firebird

alter table Machines add MachineVersion varchar(100) CHARACTER SET UNICODE_FSS 

Je souhaite modifier ces colonnes pour laisser tomber le CHARACTER SET UNICODE_FSS alors j'ai couru la commande

alter table Machines alter column MachineVersion type VARCHAR(100) 

encore, quand j'ouvre la base de données dans SQL Manager le jeu de caractères pour ces colonnes est toujours UNICODE_FSS.

Existe-t-il une autre syntaxe pour la deuxième commande pour supprimer le CHARACTER SET UNICODE_FSS?

Répondre

2
alter table Machines alter column MachineVersion type VARCHAR(100) 

Cette requête ne modifie pas le jeu de caractères.

Si vous souhaitez supprimer charater vous définissez devez modifier domaine comme:

update RDB$FIELDS set 
RDB$CHARACTER_SET_ID = NULL 
where RDB$FIELD_NAME = 'RDB$141' 

Au lieu de RDB domaine de la colonne d'utilisation 141 $

+1

Ça a marché pour moi. Merci. – Dan

+0

Notez que cela ne fonctionnera plus avec Firebird 3. La création d'une nouvelle colonne et la copie des données est la seule façon de supprimer le jeu de caractères (ou: revenir à 'none') –

1

Il est possible d'ajouter une nouvelle colonne, de copier les données de l'ancienne colonne vers la nouvelle colonne et plus tard de supprimer l'ancienne colonne?

+0

Je ne peux pas le faire à cause des éléments déclencheurs existants dans la base de données. – Dan

+0

Eh bien, ne laissez pas tomber l'ancienne colonne ;-) Changer l'ancien champ à nouveau dans le corps du déclencheur. – rstrelba

Questions connexes