1
有什麼方法可以將非空列更改爲可在Netezza中爲空? (或者我將不得不在表中創建一個新的可空列,傳輸數據並刪除舊列?)在Netezza中將NOT NULL約束更改爲NULL
對不起,如果答案顯示與谷歌搜索,我已經嘗試尋找和避風港'找不到東西。
有什麼方法可以將非空列更改爲可在Netezza中爲空? (或者我將不得不在表中創建一個新的可空列,傳輸數據並刪除舊列?)在Netezza中將NOT NULL約束更改爲NULL
對不起,如果答案顯示與谷歌搜索,我已經嘗試尋找和避風港'找不到東西。
除了添加/刪除列本身,設置或清除默認值,更改varchar的長度以及重命名列之外,您可以在NZ 6.0中更改列。
您可能需要創建一個新列,移動數據,刪除舊列。 對於一張小桌子,這應該沒問題。
但是,如果表很大:
由於Netezza公司是如何執行更新語句,它可能只是更好地創造一個全新的表,在移動數據。新西蘭需要原始表格的新郎才能刪除舊版本的更新記錄。
CREATE TABLE t_new (c bigint) DISTRIBUTE ON (c);
INSERT INTO t_new SELECT c FROM t;
ALTER TABLE t RENAME to t_old;
ALTER TABLE t_new RENAME to t;
DROP TABLE t_old;
感謝您的答覆:)(只是出於好奇,如何與那些行的Netezza公司創建一個新的錶快於更新行...這似乎有點不直觀) – iman453
Netezza公司實際上並沒有更新的行到位。相反,只需在更新時插入新行作爲行的新「版本」,並隱藏舊行。在做整個表格時,你基本上正在做100%的新插入。但是,您仍然有那些必須使用GROOM TABLE命令刪除的「隱藏」行。當更新整個表格時,創建一個新表格更有意義,因爲您不必擔心修飾。 –
啊,有道理。謝謝! – iman453