web-dev-qa-db-fra.com

Rendre une colonne nullable dans DB2 lorsque la capture de données est activée

J'utilise db2 version 9.7 * et il semble impossible de rendre une colonne NOT NULL nullable d'une manière simple.

Malheureusement, la solution d'utiliser une base de données plus conviviale pour les développeurs n'est pas disponible. Fondamentalement, dans MySQL, je veux faire quelque chose comme ça (où MY_COLUMN était VARCHAR (200) NOT NULL):

ALTER TABLE MY_TABLE MODIFY COLUMN MY_COLUMN VARCHAR(200);
19
lukewm

Ma dernière requête a abouti à quelque chose comme ceci:

ALTER TABLE MY_TABLE DATA CAPTURE NONE;
ALTER TABLE MY_TABLE ALTER MY_COLUMN DROP NOT NULL;
ALTER TABLE MY_TABLE DATA CAPTURE CHANGES;
27
lukewm

le documentation dit que le ALTER TABLE a la possibilité de DROP NOT NULL

12
djna

ALTER TABLE TABLE_NAME ALTER COLUMN COLUMN_NAME DROP NOT NULL;

fonctionne dans DB2 9.7 et supérieur. Cependant, vous voudrez peut-être effectuer une réorganisation de table (dans 9.7 db2 met la table en état de réorganisation en attente, la même chose dans 10.5 FP 5 aussi)):

call sysproc.admin_cmd ('reorg table TABLE_NAME');