我将列定义为:
not null default uuid_generate_v4()
当我尝试插入NULL
值时,我收到错误:
DBD::Pg::st execute failed: ERROR: null value in column "uuid" violates not-null constraint
代码:
INSERT INTO files( uuid, storage, type, user_id, extra )
VALUES( ?,?,?,?,? )
ON CONFLICT( uuid ) DO UPDATE SET
storage = EXCLUDED.storage,
type = EXCLUDED.type,
user_id = EXCLUDED.user_id,
extra = EXCLUDED.extra
RETURNING *
SQL
,$self->{ uuid }
,$self->storage .""
,ref $self
,$self->{ owner_id }
,JSON::XS->new->allow_nonref->encode( $args{ extra } // {} )
我很困惑。
如果尚未定义$self->{ uuid }
,如何创建新行。如果提供了$self->{ uuid }
,如何更新记录
答案 0 :(得分:1)
NULL
与DEFAULT
如果你说uuid
为NULL,那么db不会尝试使用DEFAULT值。
您必须省略uuid
字段,以便DB使用DEFAULT
INSERT INTO files( storage, type, user_id, extra )