我有定义的类型:
CREATE TYPE salary AS (salary numeric);
和一个包含数据的表:
CREATE TABLE employees (
lastname text,
firstname text,
salary salary,
);
我想使用ALTER TABLE
向薪水属性添加约束:
ALTER TABLE employees ADD CONSTRAINT minimum_salary CHECK(salary > 1.47333);
这给了我错误ERROR: operator does not exist: salary > numeric
。为什么会这样?
开头:仅存储标量值,一种类型似乎过大。为什么不只在列上创建检查约束呢?
create table employees (
lastname text,
firstname text,
salary numeric check(salary > 1.473333)
);
回到您的原始问题:我认为不可能在类型列上放置检查约束。但是,您可以做的一件事是create a domain
。域扩展了标准类型,并接受检查约束。
考虑domain
:
this demo