将约束更改为SQL表

问题描述 投票:0回答:1

我有定义的类型:

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。为什么会这样?

sql postgresql constraints
1个回答
0
投票

开头:仅存储标量值,一种类型似乎过大。为什么不只在列上创建检查约束呢?

create table employees (
    lastname text, 
    firstname text, 
    salary numeric check(salary > 1.473333)
);

回到您的原始问题:我认为不可能在类型列上放置检查约束。但是,您可以做的一件事是create a domain。域扩展了标准类型,并接受检查约束。

考虑domain

this demo
© www.soinside.com 2019 - 2024. All rights reserved.