所有範例以 distributors 表為例,實際使用時請替換為你的表名、欄位名與資料類型。
ALTER TABLE distributors ADD COLUMN address VARCHAR(30);
ALTER TABLE distributors DROP COLUMN address RESTRICT;
ALTER TABLE distributors
ALTER COLUMN address TYPE VARCHAR(80),
ALTER COLUMN name TYPE VARCHAR(100);
ALTER TABLE foo
ALTER COLUMN foo_timestamp TYPE TIMESTAMP WITH TIME ZONE
USING TIMESTAMP WITH TIME ZONE 'epoch' + foo_timestamp * INTERVAL '1 second';
ALTER TABLE distributors RENAME COLUMN address TO city;
ALTER TABLE distributors RENAME TO suppliers;
ALTER TABLE distributors ALTER COLUMN street SET NOT NULL;
ALTER TABLE distributors ALTER COLUMN street DROP NOT NULL;
ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (CHAR_LENGTH(zipcode) = 5);
ALTER TABLE distributors DROP CONSTRAINT zipchk;
ALTER TABLE distributors ADD CONSTRAINT distfk
FOREIGN KEY (address) REFERENCES addresses(address) MATCH FULL;
ALTER TABLE distributors ADD CONSTRAINT dist_id_zipcode_key UNIQUE (dist_id, zipcode);
ALTER TABLE distributors ADD PRIMARY KEY (dist_id);
ALTER TABLE distributors SET TABLESPACE fasttablespace;
| 操作 | 語法範例 |
|---|---|
| 新增欄位 | ALTER TABLE tableName ADD columnName VARCHAR(30); |
| 修改欄位類型 | ALTER TABLE tableName ALTER COLUMN columnName VARCHAR(4000); |
| 修改欄位名稱 | EXEC sp_rename 'tableName.column1', 'column2', 'COLUMN'; |
| 刪除欄位 | ALTER TABLE tableName DROP COLUMN columnName; |
ALTER COLUMN 可能導致長時間 Sch-M 鎖,建議低峰期執行或採用線上變更工具(如 pt-online-schema-change 移植版)。CONSTRAINT zipchk),利於後續管理與除錯。