如何“删除子表上的继承列”

时间:2019-01-18 17:14:35

标签: postgresql

我创建了一个Child表,该表继承了其他2个表中的列。 现在我只需要从子表中删除一些列,可以吗?

我尝试使用ALTER TABLE ... DROP COLUMN删除。 我也尝试过通过选项进行操作,但是会弹出“此对象不可用户编辑”的弹出窗口

//Creating the Child Table//
CREATE TABLE accidentinfo_year2010
(CHECK (EXTRACT (YEAR FROM timeline) = '2010' ) ) ; 
INHERITS (accidentinfo , vehicleinfo ) ;



//Trying to Delete some columns//
ALTER TABLE accidentinfo_year2010
DROP COLUMN accident ,
DROP COLUMN severity , 
DROP COLUMN timeline , 
DROP COLUMN area , 
DROP COLUMN weathercondition , 
DROP COLUMN year  , 
DROP COLUMN inscotland , 
DROP COLUMN vehicleage , 
DROP COLUMN model , 
DROP COLUMN sexofdriver , 
DROP COLUMN vehicletype ; 

我需要通过代码或通过属性删除指定的列。

1 个答案:

答案 0 :(得分:1)

不可能以简单的方式。该列是继承的,如果您不想继承某些列,则需要声明一个不继承那些列的表。

在当前表继承之前,也许您需要更多的抽象表来继承。

所以您能做的最好的-也许不是最好的方法-是:

  1. 仅使用所需的列创建更多抽象表即可继承(如果需要)
  2. 使您的表具有删除的列以继承它
  3. 将所需列中的数据复制到该新表中
  4. 将不想要的列之外的数据复制到另一个不继承带有不想要的列的表的表中