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