【发布时间】:2013-11-19 08:55:54
【问题描述】:
我在尝试用 PostgreSQL 中的唯一字符串更新列时遇到问题。我有一张桌子,里面有大约 30 条记录。我想要的是为特定列设置一个唯一的sha1 值(我们称之为fieldName),但仅限于该列为NULL 的那些行 - 表中大约有20kk 条此类记录。 fieldName 列有一个 UNIQUE 约束。
所以,我写了一个简单的查询:
UPDATE tableName
SET fieldName =
ENCODE(
DIGEST(CONCAT('salt_string, EXTRACT(EPOCH FROM NOW()), random()), 'sha1'),
'hex')
WHERE fieldName IS NULL
但在执行此查询一段时间后,我总是收到错误ERROR: duplicate key value violates unique constraint "..."。
所以我想问一下我生成唯一字符串的方式是否有问题。也许这还不够“随机”?还是我错过了什么?
【问题讨论】:
标签: database postgresql postgresql-9.2 unique-constraint