2011-08-02 19 views
18

db2 sürüm 9.7 kullanıyorum * ve bir NULL NULL sütununun herhangi bir basit şekilde null olması imkansız görünüyor.Bir sütun null olamaz DB2

Ne yazık ki daha geliştirici dostu bir veritabanı kullanmanın çözümü mevcut değildir. MySQL konuşmak içinde Temelde, ben (MY_COLUMN VARCHAR (200) NOT NULL olarak kullanılan) Böyle bir şey yapmak istiyorum:

ALTER TABLE MY_TABLE MODIFY COLUMN MY_COLUMN VARCHAR(200); 

cevap

25

Benim son sorgu böyle bir şey sona erdi:

ALTER TABLE MY_TABLE DATA CAPTURE NONE; 
ALTER TABLE MY_TABLE ALTER MY_COLUMN DROP NOT NULL; 
ALTER TABLE MY_TABLE DATA CAPTURE CHANGES; 
+1

ile cevabınızı okuduktan sonra çözebiliriz. Diğerleri için bu yanıtı tökezleyen: Bu [SQL0270N Fonksiyonu desteklenmiyor çünkü (Nedeni kodu = "100")] (http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.5.0/com.ibm.db2.luw.messages.sql.doc/doc/msql00270n.html?lang = tr) "Sütunu bırakın ve veri yakalama özelliği olan herhangi bir tabloda null yapamaz duruma izin verilmez." - bu yüzden veri yakalamanın değiştirilmesi gerekiyor. –

11

documentation ALTER tablo NOT NULL

DAMLA imkanı vardır diyor
+4

Doğru. Karşılaştığım sorun, veri yakalamanın açık olduğuydu, bunun farkında değildi ve DB2'nin iyi bir nedenden ötürü aşırı derecede karmaşık olduğu sonucuna muhtemelen haksızlık ettim. – lukewm

+1

Çok yardımcı. :-) Ben bir DB2 ortamında aynı sorunu vardı ve 'ALTER TABLE TABLE_NAME ALTER COLUMN COLUMN_NAME DROP NOT NULL' – Kaadzia

3

ALTER tablo TABLE_NAME ALTER SÜTUN sütunu DAMLA NOT NULL; DB2 9.7 ve üzeri sürümlerde çalışır. Ne zaman bir tablo reorg gerçekleştirmek isteyebilirsiniz (9.7 db2 içinde tablo, 10.5 FP 5 de aynı durumda, reorg beklemede durumu koyar):

çağrı sysproc.admin_cmd ('reorg tablosu TABLE_NAME');

İlgili konular