sql - 将 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
结尾
此查询的目的是在表具有修订列的情况下设置该列的默认值。
解决方案
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;
$$
;
推荐阅读
- python - 如何让 Pygame 在鼠标方向显示图像?
- python - tf.keras.Concatenate Graph 连接两个输入层时断开连接
- docker - Gunicorn/nginx - Flask 应用程序 - 为什么 2/5 请求冻结在我身上....但在隐身模式下它永远不会冻结?
- javascript - 如何使可拖动的 div 元素不相互堆叠
- angular - Angular next with Webpack Dependency Injection error 非常简单的例子
- rust - RefCell 和 Rc 生锈
- java - 覆盖惰性 OneToMany 关系
- php - 提供由 SSO SAML 2.0 控制的静态 Twig 路由的 Symfony 应用程序?
- vb.net - 如何从 vb.net 在 Word 中添加多张图片
- laravel - 无法与主机mailhog建立连接:stream_socket_client():php_network_getaddresses:getaddrinfo失败:名称或服务未知