pg:在冲突上...断言吗? ...检查吗?

时间:2019-06-09 07:04:21

标签: sql postgresql

我正在处理256位ID(区块链哈希)。为了节省空间,我决定128bits的唯一性就足够了,因此我将散列拆分:

hash_id BYTEA NOT NULL,
hash_rest BYTEA NOT NULL,

hash_id是我的主键,hash_rest只是附加数据。这样,其他列只能通过16个字节而不是32个字节来引用此表。

但是,我想可靠地检测一种情况,在这种情况下,我将尝试插入我的假设(128位前缀是唯一的)无法尝试的数据。我在想类似的东西:

INSERT INTO ... ON CONFLICT (hash_id) DO ASSERT hash_rest = EXCLUDED.hash_rest

如果甚至有实现的方法,那么下一步的挑战是...我可能需要将该约束与现有约束结合使用(有时我会用ON CONFLICT (hash_id) DO UPDATE timestamp = now()更新一些时间戳。

0 个答案:

没有答案