You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server条件创建默认约束语句转PostgreSQL语法咨询

SQL Server 条件创建默认约束语句转 PostgreSQL 实现

PostgreSQL 不支持 SQL Server 原生的 IF...BEGIN 风格的 DDL 条件执行语法,可通过 DO 语句执行 PL/pgSQL 匿名块实现完全对齐原逻辑的功能,对应代码如下:

DO $$
BEGIN
    -- 校验条件:Flex表存在revision列 且 不存在名为df_revision的默认约束
    IF EXISTS (
        SELECT 1 FROM pg_attribute 
        WHERE attrelid = 'Flex'::regclass 
          AND attname = 'revision' 
          AND attisdropped = false
    ) AND NOT EXISTS (
        SELECT 1 FROM pg_constraint 
        WHERE conname = 'df_revision' 
          AND conrelid = 'Flex'::regclass 
          AND contype = 'd'
    ) THEN
        ALTER TABLE Flex ADD CONSTRAINT df_revision DEFAULT 0 FOR revision;
    END IF;
END $$;

补充说明

  • 以上写法适用于 PostgreSQL 11 及以上版本,该版本开始支持显式命名默认约束。如果使用 PostgreSQL 10 及更早版本,不支持自定义默认约束名,可将ALTER TABLE语句替换为:ALTER TABLE Flex ALTER COLUMN revision SET DEFAULT 0;,此时默认约束名由 PostgreSQL 自动生成。
  • 如果你的表、列在创建时使用双引号强制了大小写规则,需要将代码中对应的表名、列名、约束名字符串调整为匹配的大小写,必要时用双引号包裹。

内容的提问来源于stack exchange,提问作者Keshav Narsu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:18:05