PostgreSQL:如何将空值插入uuid

时间:2014-11-18 11:07:38

标签: postgresql null sql-insert

需要在没有 NOT NULL 规范(非主键)的uuid类型的字段中插入空值。

当我尝试插入''时,返回:

ERROR:  invalid input syntax for uuid: ""

当我尝试插入null时,返回:

ERROR:  null value in column "uuid" violates not-null constraint

怎么做?

psql 9.3.5

SQL:

INSERT INTO inv_location (address_id)
VALUES (null)

2 个答案:

答案 0 :(得分:2)

如果列定义为NOT NULL,则无法输入NULL值。就这么简单。

错误消息中的

uuid

ERROR:  null value in column "uuid" violates not-null constraint

是该列的 名称

uuid         | character varying(36) | not null

不是address_id的数据类型。此列明确定义为NOT NULL

您的INSERT语句在目标列表中不包含uuid,因此如果没有不同的列默认值,则会为其分配NULL。邦。

这表明使用类型名称作为标识符是一个坏主意:导致混淆错误消息(以及其他混淆)。

答案 1 :(得分:1)

在Postgres中,使用uuid_nil()函数模拟空uuid(与'00000000-0000-0000-0000-000000000000'相同)

INSERT INTO inv_location (address_id)
VALUES (uuid_nil())

您可能需要具有uuid扩展名(不确定),如果需要,请运行此命令(仅一次):

create extension if not exists "uuid-ossp";