首页 > 解决方案 > 将 SQL Server 查询转换为 Postgres

问题描述

我正在尝试将此 if 语句从 SQL Server 转换为 Postgres:

IF COL_LENGTH('Flex','revision') 不是 NULL 并且 OBJECT_ID(N'df_revision', N'D') 是 NULL

开始

ALTER TABLE Flex ADD CONSTRAINT df_revision DEFAULT 0 FOR revision

结尾

此查询的目的是在表具有修订列的情况下设置该列的默认值。

标签: sqlpostgresql

解决方案


Postgres 具有列的默认。这些不是“约束”。

要更改您使用的列的默认值:

alter table flex alter column revision set default 0;

如果出于某种奇怪的原因您不知道该列是否存在于表中,您可以使用 PL/pgSQL 块:

do
$$
begin
  if exists (select * 
             from information_schema.columns
             where table_name = 'flex' 
               and column_name = 'df_revision')
  then 
     alter table flex alter column revision set default 0;
  end if;
end;
$$
;

推荐阅读