在表结构所在的 postgresql 中进行一些插入工作
CREATE TABLE user_subservices(
user_id uuid,
subservice_id uuid
);
我传递一个 user_id 数组和一个 subservice_id
q:=INSERT INTO user_subservices (user_id,subservice_id) VALUES (unnest(Array[$1]::uuid[]),$2)
通过
[]uuid.UUID
为 $1
和单个 uuid 为 $2
我正在使用 gorm 来运行这些查询
err := db.dbConn.DB.Debug().Exec(q, users, Id).Error
在调试中我得到:
INSERT INTO user_subservices (user_id,subservice_id) VALUES (unnest(Array['[8bf23c03-4112-4097-a352-b567d5a00052 9epolf4b-ff4a-49ef-bojd-2890ff3a7yhf]']::uuid[]),'00uj9000-0100-0120-0000-034000000068')
它没有作为正确的数组传递给插入
插入任何解决方案??
从调试日志中,这是操作中使用的 SQL 查询:
INSERT INTO user_subservices (user_id, subservice_id)
VALUES (
unnest(Array('[8bf23c03-4112-4097-a352-b567d5a00052 9epolf4b-ff4a-49ef-bojd-2890ff3a7yhf]')::uuid[]),
'00uj9000-0100-0120-0000-034000000068'
)
这是一个错误的查询,正确的应该是:
INSERT INTO user_subservices (user_id, subservice_id)
VALUES (
unnest(Array['8bf23c03-4112-4097-a352-b567d5a00052', '9epolf4b-ff4a-49ef-bojd-2890ff3a7yhf']::uuid[]),
'00uj9000-0100-0120-0000-034000000068'
)
看引号(
'
)和逗号(,
)的位置,还有Array()
是不正确的语法,应该是Array[]
.
除此之外,我发现您的查询存在另一个问题。其中两个 UUID 无效:
9epolf4b-ff4a-49ef-bojd-2890ff3a7yhf
00uj9000-0100-0120-0000-034000000068
即使在修复查询后,您也可能会收到错误
SQL Error [22P02]: ERROR: invalid input syntax for type uuid: "00uj9000-0100-0120-0000-034000000068"
。然而,它可以通过提供有效的 UUID 轻松解决