本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
ALTER TABLE
ALTER TABLE 可變更資料表的定義。
支援的語法
ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] action [, ... ] ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME [ COLUMN ] column_name TO new_column_name ALTER TABLE [ IF EXISTS ] [ ONLY ] name [ * ] RENAME CONSTRAINT constraint_name TO new_constraint_name ALTER TABLE [ IF EXISTS ] name RENAME TO new_name ALTER TABLE [ IF EXISTS ] name SET SCHEMA new_schema where action is one of: ADD [ COLUMN ] [ IF NOT EXISTS ] column_name data_type [ STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ] ALTER [ COLUMN ] column_name SET DEFAULT expression ALTER [ COLUMN ] column_name DROP DEFAULT ALTER [ COLUMN ] column_name DROP NOT NULL ALTER [ COLUMN ] column_name DROP EXPRESSION [ IF EXISTS ] ALTER [ COLUMN ] column_name ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITY [ ( sequence_options ) ] ALTER [ COLUMN ] column_name { SET GENERATED { ALWAYS | BY DEFAULT } | SET sequence_option | RESTART [ [ WITH ] restart ] } [...] ALTER [ COLUMN ] column_name DROP IDENTITY [ IF EXISTS ] ALTER [ COLUMN ] column_name SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT } ADD table_constraint_using_index DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ] OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } and table_constraint_using_index is: [ CONSTRAINT constraint_name ] UNIQUE USING INDEX index_name
說明
ADD [ COLUMN ] [ IF NOT EXISTS ]-
此表單會使用與 相同的語法,將新資料欄新增至資料表CREATE TABLE。如果已指定
IF NOT EXISTS,且具有此名稱的資料欄已存在,則不會擲回錯誤。 SET/DROP DEFAULT-
這些表單會設定或移除欄的預設值 (其中移除等同於將預設值設定為 NULL)。新的預設值僅適用於後續
INSERT或UPDATE命令;它不會導致資料表中已存在的資料列變更。 DROP NOT NULL-
此表單會變更資料欄以允許 null 值。
DROP EXPRESSION [ IF EXISTS ]-
此表單會將儲存產生的資料欄轉換為正常的基礎資料欄。資料欄中的現有資料會保留,但未來的變更不會再套用產生表達式。如果已指定
DROP EXPRESSION IF EXISTS,且資料欄不是產生的資料欄,則不會擲出錯誤。在此情況下,會改為發出通知。 ADD GENERATED { ALWAYS | BY DEFAULT } AS IDENTITYSET GENERATED { ALWAYS | BY DEFAULT }DROP IDENTITY [ IF EXISTS ]-
這些表單會變更資料欄是身分資料欄,或變更現有身分資料欄的產生屬性。如需詳細資訊,請參閱 CREATE TABLE。如同
SET DEFAULT,這些表單只會影響後續INSERT和UPDATE命令的行為;它們不會導致資料表中已有的資料列變更。sequence_option是 支援的選項,ALTER SEQUENCE例如INCREMENT BY。這些形式會變更以現有身分資料欄為基礎的序列。注意
使用 時,Amazon Aurora DSQL 需要明確
CACHE值ADD GENERATED AS IDENTITY。此外,只支援資料欄上的身分bigint資料欄。使用身分資料欄時,應仔細考慮快取值。如需詳細資訊,請參閱 CREATE SEQUENCE 頁面上的重要標註。
如需如何根據工作負載模式最佳使用身分資料欄的指引,請參閱 使用序列和身分資料欄。
SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN | DEFAULT }-
此表單會設定資料欄的儲存模式。如需可用儲存模式的詳細資訊,請參閱 儲存模式 CREATE TABLE頁面上的 。
ADDtable_constraint_using_index-
此表單會根據現有的唯一索引,將新的
UNIQUE限制新增至資料表。索引的所有資料欄都會包含在限制中。索引必須處於
VALID狀態;不支援在目前建置索引時使用 索引新增唯一限制條件。如果提供限制條件名稱,則會重新命名索引以符合限制條件名稱。否則,限制條件的名稱將與索引相同。
執行此命令後,限制條件會將索引「擁有」,就像索引是由一般
CREATE UNIQUE INDEX ASYNC命令建置一樣。特別是,捨棄限制也會使索引消失。 DROP CONSTRAINT [ IF EXISTS ]-
此表單會捨棄資料表上指定的限制條件,以及限制條件下的任何索引。如果
IF EXISTS已指定 且限制條件不存在,則不會擲回錯誤。在此情況下,會改為發出通知。重要
目前,
CREATE TABLE運算式支援新增限制條件。ALTER TABLE ADD CONSTRAINT(鏡射支援DROP CONSTRAINT) 尚無法使用。如果您對此即將推出的功能有任何疑問,請聯絡 AWS Support 或直接透過 DSQL Public Discord聯絡。 OWNER TO-
此表單會將資料表的擁有者變更為指定的使用者。
RENAME-
RENAME表單會變更資料表的名稱、資料表中個別資料欄的名稱,或資料表的限制名稱。重新命名具有基礎索引的限制條件時,索引也會重新命名。對儲存的資料沒有影響。 SET SCHEMA-
此表單會將資料表移至另一個結構描述。資料表資料欄擁有的相關索引、限制條件和序列也會一併移動。
Parameters
IF EXISTS-
如果資料表不存在,請勿擲回錯誤。在此情況下會發出通知。
name-
要修改之現有資料表的名稱 (選擇性符合結構描述資格)。如果在資料表名稱之前指定
ONLY,則只會變更該資料表。如果ONLY未指定 ,則會變更資料表及其所有子資料表 (如果有的話)。或者,*可以在資料表名稱後面指定,以明確指出包含子資料表。 column_name-
新資料欄或現有資料欄的名稱。
new_column_name-
現有資料欄的新名稱。
new_name-
資料表的新名稱。
data_type-
新資料欄的資料類型。
constraint_name-
新的或現有的限制條件名稱。
CASCADE-
自動捨棄相依於捨棄限制的物件 (例如參考資料欄的檢視),然後捨棄相依於這些物件的所有物件。
RESTRICT-
如果有任何相依物件,請拒絕捨棄限制條件。這是預設行為。
new_owner-
資料表新擁有者的使用者名稱。
new_schema-
資料表要移動到的結構描述名稱。