3

我必须删除许多表中存在的同一列。例如,名称为“c”的列存在于许多表中……t1、t2、t3……

一种解决方案是编写与ALTER包含该列的表的数量一样多的语句来删除列。

有什么方法可以让我使用单ALTER表语句做同样的事情。

4

1 回答 1

3

不可以。一条ALTER TABLE语句一次不能更改多个表。您可以基于ALL_TAB_COLS例如编写一些动态 SQL

SELECT 'ALTER TABLE ' || owner || '.' || table_name || ' DROP COLUMN '|| column_name || ';'
FROM all_tab_columns
WHERE column_name = 'MY_UNWANTED_COLUMN'
AND owner = 'MY_OWNER'
/

然后运行该脚本。您可能想要添加

AND table_name IN ('MY_TAB1','MY_TAB2')

指定一个确切的表格列表,以备不时之需。

于 2012-09-14T07:32:07.860 回答