加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在PostgreSQL中添加列(如果不存在)?

发布时间:2020-12-13 16:51:05 所属栏目:百科 来源:网络整理
导读:问题很简单。如何添加列x到表y,但只有当x列不存在?我发现只有解决方案 here如何检查列是否存在。 SELECT column_name FROM information_schema.columns WHERE table_name='x' and column_name='y'; 这里是一个简短的版本使用“DO”语句: DO $$ BEGIN BEGI
问题很简单。如何添加列x到表y,但只有当x列不存在?我发现只有解决方案 here如何检查列是否存在。
SELECT column_name 
FROM information_schema.columns 
WHERE table_name='x' and column_name='y';
这里是一个简短的版本使用“DO”语句:
DO $$ 
    BEGIN
        BEGIN
            ALTER TABLE <table_name> ADD COLUMN <column_name> <column_type>;
        EXCEPTION
            WHEN duplicate_column THEN RAISE NOTICE 'column <column_name> already exists in <table_name>.';
        END;
    END;
$$

您不能将这些作为参数传递,您需要在客户端的字符串中执行变量替换,但这是一个自包含的查询,只有在列已存在时才发出消息,如果不存在,则添加;将继续在其他错误(如无效的数据类型)上失败。

如果这些方法是来自外部源的随机字符串,我不推荐使用这些方法。不管你使用什么方法(作为查询执行的cleint端或服务器端动态字符串),它将是一个灾难的食谱,因为它打开了SQL注入攻击。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读