使用 ALTER TABLE DROP COLUMN
语句可删除表的列以及在该列上创建的现有数据、索引和约束。
ALTER TABLE <table_name>
DROP COLUMN [IF EXISTS] <column_name> [CASCADE | RESTRICT];
假设您已经有以下 employee
表。
以下 ALTER TABLE 语句将删除 employee
表的 email
列及其所有数据。
ALTER TABLE employee
DROP COLUMN email;
注意:如果您尝试删除不存在的列,请使用IF EXISTS
子句。仅当列存在时它才会删除列,否则 PostgreSQL 将仅给出警告并忽略删除命令。
删除依赖对象
如果您尝试删除的列正在任何其他数据库对象(如视图、触发器、过程、函数等)中使用,则 PostgreSQL 将引发错误并且不会删除列。 将 CASCADE 子句与 DROP COLUMN 语句结合使用可从表中删除列以及使用该列的依赖数据库对象。
例如,在 employee
表上创建以下 employee_view
视图,如下所示。
CREATE OR REPLACE VIEW employee_dtl
AS SELECT * FROM employee;
现在,如果您尝试删除 employee
表的 email
列,那么 PostgreSQL 将引发错误,如下所示。
要删除其他数据库对象中正在使用的列,请使用 CASCADE 子句和 DROP 命令,如下所示。
ALTER TABLE employee
DROP COLUMN email CASCADE;
CASCADE 子句也将删除依赖对象。上述语句还删除了 employee_dtl
视图。
删除多列
使用多个 DROP COLUMN 子句删除表中的多个列。
ALTER TABLE employee
DROP COLUMN email CASCADE,
DROP COLUMN gender;
使用 pgAdmin 删除列
您可以通过右键单击表名称并选择"属性"来删除 pgAdmin 中的一列或多列。 在弹出窗口中,转到"列"选项卡,您可以单击列前面的删除图标将其删除,如下所示。
单击"保存"按钮保存更改。