我正在尝试向pg_type添加新属性,我需要检查是否已经存在名为“ parentvehicleid”的属性。
如果我要向表中添加一列,则可以像示例中那样检查column_name:
branch-1
我可以检查属性是否已经在类型中?
IF NOT EXISTS(SELECT 1 FROM information_schema.columns WHERE table_name = 'tvms_routes' AND column_name = 'parentdriverid') THEN
ALTER TABLE tvms_routes ADD COLUMN parentdriverid integer;
END IF;
我不能删除类型,对象取决于它。表column_name to types属性的等效项是什么?
答案 0 :(得分:0)
复合类型具有其对应的表(可能是虚拟的)。您可以在pg_class
中找到它的条目,并在pg_attribute:
IF NOT EXISTS (
SELECT 1
FROM pg_type t
JOIN pg_class c ON c.oid = t.typrelid
JOIN pg_attribute a ON a.attrelid = c.oid
WHERE t.typname = 'tvms_dseoptitree_routes_type'
AND a.attname = 'parentvehicleid'
)
THEN
ALTER TYPE tvms_dseoptitree_routes_type ADD ATTRIBUTE parentvehicleid integer;
END IF;