# 10.4.价值存储

要插入到表中的值将根据以下步骤转换为目标列的数据类型。

值存储类型转换

  1. 检查是否与目标完全匹配。

  2. 否则,请尝试将表达式转换为目标类型。如果分配演员这两种类型之间的差异在pg_演员阵容目录(参见创建演员阵容)。或者,如果表达式是未知类型的文本,则文本字符串的内容将提供给目标类型的输入转换例程。

  3. 检查目标类型是否有大小转换。尺寸铸件是从该类型到自身的铸件。如果在pg_演员阵容目录,在存储到目标列之前将其应用于表达式。此类强制转换的实现函数始终采用类型为的额外参数整数,它接收目标列的atttypmod值(通常是其声明的长度,尽管atttypmod根据不同的数据类型而有所不同),可能需要三分之一的时间布尔值表示强制转换是显式还是隐式的参数。cast函数负责应用任何与长度相关的语义,例如大小检查或截断。

例10.9.性格存储类型转换

对于声明为人物(20)以下语句显示存储的值大小正确:

CREATE TABLE vv (v character(20));
INSERT INTO vv SELECT 'abc' || 'def';
SELECT v, octet_length(v) FROM vv;

          v           | octet_length