【问题标题】:ADD Constraint to ALTER DOMAIN ERROR为 ALTER DOMAIN ERROR 添加约束
【发布时间】:2017-12-04 11:08:27
【问题描述】:

当我执行时:

ALTER DOMAIN public.remainingamount
    ADD CONSTRAINT "chk_remainingAmount" CHECK (remainingAmount > 0);

我在 pgAdmin 4 中收到以下消息:

错误:列“remainingamount”不存在 SQL 状态:42703

该列存在。我可以在侧边栏中看到它!作为证据,当我执行以下行时:

ALTER DOMAIN public.remainingamount
    ADD CONSTRAINT "chk_remainingAmount" CHECK (remainingAmount > 0);

我收到消息:

错误:类型“remainingamount”已存在 SQL 状态:42710

如何向现有域添加新约束?

【问题讨论】:

  • 您很可能忘记了 remainingAmount 周围的双引号。如果这不是问题,请显示域定义(并解决问题,因为您不太可能针对同一语句收到不同的错误消息)。

标签: sql postgresql constraints alter


【解决方案1】:

您可以在DOMAINCHECK 约束中使用的唯一变量是VALUE。假设基类型为money:

ALTER DOMAIN public.remainingamount
    ADD CONSTRAINT "chk_remainingAmount" CHECK (VALUE > 0::money);
    

the documentation:

检查(表达式)

(...)

目前,CHECK 表达式不能包含子查询,也不能引用 VALUE 以外的变量。

【讨论】:

  • 错误:运算符不存在:钱>整数提示:没有运算符与给定的名称和参数类型匹配。您可能需要添加显式类型转换。 SQL 状态:42883
  • 错误信息清楚地说明了你应该怎么做...查看更新的答案。
猜你喜欢
  • 2012-04-28
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
  • 1970-01-01
  • 2013-09-26
相关资源
最近更新 更多