Table
Greenplum DB 更改表列長度
我是使用 Greenplum DB 的新手,正在研究 Oracle DB。我從概念上理解柱狀數據庫中的 Greenplum,並且與 Oracle 有不同的工作方式。
我的問題是關於改變表格列的長度。我創建了一個帶有say data type 列的表
character varying(50)
。在這張表的頂部,我創建了一個總結一些資訊的視圖。後來我想將列的長度更改為character varying(100)
. 在GP中是不允許的。我不得不刪除視圖,更改列長度,然後重新創建視圖。我不相信甲骨文就是這種情況。不知道為什麼GP必須這樣做。
有人知道如何避免這種情況嗎?
它甚至與類型或子類型無關。更改表上的列需要您刪除並重新創建引用它的所有依賴項。您可以在單個事務中執行此操作。
CREATE TABLE foo ( a varchar(10) ); CREATE VIEW bar AS TABLE foo; BEGIN; DROP VIEW bar; ALTER TABLE foo ALTER COLUMN a SET DATA TYPE varchar(100); CREATE VIEW bar AS TABLE foo; COMMIT;
每當您在 Greenplum 中更改或刪除/創建表時,關聯的 ID 將在元數據表中更改。因此,引用舊 ID 的視圖將不起作用。這就是需要重新創建視圖的原因。
腳步:
ALTER TABLE
DROP VIEW
RECREATE VIEW