需要在没有 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)
答案 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";