Table

Greenplum DB 更改表列長度

  • November 17, 2017

我是使用 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 的視圖將不起作用。這就是需要重新創建視圖的原因。

腳步:

  1. ALTER TABLE
  2. DROP VIEW
  3. RECREATE VIEW

引用自:https://dba.stackexchange.com/questions/175139