我已經列定義爲:爲什麼價值不是自動生成的?
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 }
是提供
如果列自動生成的,你不需要添加它在插入列清單,只是把那些你手動通知。 –
如果你想'默認'踢,從目標列表中刪除'uuid'列 - 但然後你永遠不會有衝突 –
@a_horse_with_no_name:有沒有辦法使'UPDATE或INSERT'在我的情況下? –