PostgreSQL高级构建块:类型、规则与触发器详解
1. 域约束与验证
在PostgreSQL中,当一个属性使用特定域,且属性值长度超过15个字符时,SQL语句可能会因数据违规而失败。为了让新创建的数据遵循域约束,同时不对旧数据进行验证,可以使用以下语句:
ALTER DOMAIN text_without_space_and_null ADD CONSTRAINT text_without_space_and_null_length_chk check (length(value)<=15) NOT VALID;
数据清理完成后,还可以使用 ALTER DOMAIN ... VALIDATE CONSTRAINT
选项来验证旧数据的约束。最后,可以使用 \dD+
Psql元命令来描述域:
\dD+ text_without_space_and_null
2. PostgreSQL的 CREATE TYPE
命令
2.1 复合数据类型
复合数据类型在创建函数时非常有用,特别是当返回类型是包含多个值的行时。例如,假设我们要创建一个函数,返回特定客户账户的 seller_id
、 seller_name
、广告数量和总排名。首先需要创建一个类型:
CREATE