Salut à tous,
J'ai une BDD sous interbase 6 Open Edition.
Est ce possible de changer la valeur par defaut d'un champs de type Date.
J'aimerais rajoutter que la valeur par defaut est Null.
Merci
Salut à tous,
J'ai une BDD sous interbase 6 Open Edition.
Est ce possible de changer la valeur par defaut d'un champs de type Date.
J'aimerais rajoutter que la valeur par defaut est Null.
Merci
Essaie ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER COLUMN MaColonne datetime null
Hélas on ne peux pas modifier en une seule commande la valeur par défaut d'une colonne.
Si ta colonne date n'est pas liée à d'autres objets (index, clé étrangères etc) alors le plus simple est de créer une colonne
Ensuite copie des données de la colonne ColonneDate dans la Colonne TEMP_DATE
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER TABLE "MaTable" ADD TEMP_DATE DATE DEFAULT NULL
Effacement de l'ancienne colonne
Code : Sélectionner tout - Visualiser dans une fenêtre à part UPDATE "MaTable" set TEMP_DATE="ColonneDate";
Re mettre la colonne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part alter table "MaTable" drop "ColonneDate"
Re copie des données:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER TABLE "MaTable" ADD "ColonneDate" DATE DEFAULT NULL
et finalement effacement de la colonne temporaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part UPDATE "MaTable" set "ColonneDate"=TEMP_DATE;
Voilà. Sinon il existe une méthode plus courte mais il faut trifouiller dans les les tables systeme. On peux l'utiliser si la colonne est liée à d'autres objets..
Code : Sélectionner tout - Visualiser dans une fenêtre à part alter table "MaTable" drop TEMP_DATE
Ajout d'une colonne temporaire :
Changement des tables systemes pour attribuer la valeur par Defaut créée pour TEMP_DATE à ColonneDate (la colonne date d'origine qui n'a pas de valeur par defaut) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER TABLE "MaTable" ADD TEMP_DATE DATE DEFAULT Null
Effacement de la colonne temporaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 UPDATE RDB$RELATION_FIELDS F1 SET F1.RDB$DEFAULT_VALUE = (SELECT F2.RDB$DEFAULT_VALUE FROM RDB$RELATION_FIELDS F2 WHERE (F2.RDB$RELATION_NAME = 'MaTable') AND (F2.RDB$FIELD_NAME = 'TEMP_DATE')), F1.RDB$DEFAULT_SOURCE = (SELECT F3.RDB$DEFAULT_SOURCE FROM RDB$RELATION_FIELDS F3 WHERE (F3.RDB$RELATION_NAME = 'MaTable') AND (F3.RDB$FIELD_NAME = 'TEMP_DATE')) WHERE (F1.RDB$RELATION_NAME = 'MaTable') AND (F1.RDB$FIELD_NAME = 'ColonneDate')
Code : Sélectionner tout - Visualiser dans une fenêtre à part ALTER TABLE "MaTable" DROP TEMP_DATE
Merci Barbibulle.
Ca marche la solution n° 1 car les champs ne sont pas lié ni indexé.
Merci
Partager