除了基于表创建我自己的类型之外,是否有任何方法可以让基于表的自定义类型遵守表检查约束?
假设下表用作自定义类型的来源:
CREATE TABLE source
(
id character varying(20) NOT NULL,
weight smallint NOT NULL,
CONSTRAINT source_pkey PRIMARY KEY (id),
CONSTRAINT source_weight_check CHECK (weight > 0 AND weight < 6)
)
现在,我打算创建如下数据表:
CREATE TABLE final
(
name character varying(20) NOT NULL,
data source NOT NULL,
CONSTRAINT final_pkey PRIMARY KEY (name),
)
当向最终表中插入记录时,将不会遵守检查约束。
要求:
- 我想避免基于源代码创建自己的类型,因为当源代码更改时,我将被迫记住还要更新自定义类型。
- 我意识到基于表的自定义类型遵守域检查约束。但是,在我的特殊情况下,源数据库中的权重字段不适合域。它的检查约束因表而异。仅供参考,它是用于计算加权平均值的值。
只有当记录的所有字段都为空或记录本身为空时,记录才会为空。如果要检查是否有任何字段为空,则一一检查: