gpt4 book ai didi

sql - 如何检查类型属性是否已经存在

转载 作者:行者123 更新时间:2023-11-29 13:42:47 24 4
gpt4 key购买 nike

我正在尝试向我的 pg_type 添加新属性,我需要检查是否已经存在具有名为“parentvehicleid”的属性的类型。

如果我要向表中添加一列,我可以检查 column_name,如示例所示:

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;

我可以检查属性是否已经在类型中吗?

IF NOT EXISTS(SELECT 1 FROM pg_type WHERE typname = 'tvms_dseoptitree_routes_type' AND *WHAT GOES HERE??* = 'parentvehicleid') THEN                                                     
ALTER TYPE public.tvms_dseoptitree_routes_type ADD ATTRIBUTE parentvehicleid integer;
END IF;

我不能删除类型,对象取决于它。表 column_name 与 types 属性的等效项是什么?

最佳答案

复合类型有其对应的表(可能是虚拟的)。您可以在 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;

关于sql - 如何检查类型属性是否已经存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52814959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com