1
0
Fork 0
forked from dlang/cdcdb

Переписаны запросы, которые предотвращают автоинкремент в случае, если производится повторная попытка добавления существующей записи

This commit is contained in:
Alexander Zhirov 2025-09-22 20:41:12 +03:00
parent c290bb6f51
commit dd28c4b4d7
Signed by: alexander
GPG key ID: C8D8BE544A27C511

View file

@ -285,8 +285,10 @@ public:
auto queryResult = sql(
q{
INSERT INTO blobs (sha256, z_sha256, size, z_size, content, zstd)
VALUES (?,?,?,?,?,?)
ON CONFLICT (sha256) DO NOTHING
SELECT ?1,?2,?3,?4,?5,?6
WHERE NOT EXISTS (
SELECT 1 FROM blobs WHERE sha256 = ?1
)
RETURNING sha256
},
blob.sha256[],
@ -305,8 +307,11 @@ public:
{
auto queryResult = sql(
q{
INSERT INTO processes (name) VALUES (?)
ON CONFLICT(name) DO NOTHING
INSERT INTO processes (name)
SELECT ?1
WHERE NOT EXISTS (
SELECT 1 FROM processes WHERE name = ?1
)
}, name
);
@ -318,8 +323,11 @@ public:
{
auto queryResult = sql(
q{
INSERT INTO files (name) VALUES (?)
ON CONFLICT(name) DO NOTHING
INSERT INTO files (name)
SELECT ?1
WHERE NOT EXISTS (
SELECT 1 FROM files WHERE name = ?1
)
}, name
);
@ -332,8 +340,10 @@ public:
auto queryResult = sql(
q{
INSERT INTO users (uid, name)
VALUES (?, ?)
ON CONFLICT(uid) DO NOTHING;
SELECT ?1,?2
WHERE NOT EXISTS (
SELECT 1 FROM users WHERE uid = ?1
)
}, uid, name
);