在PostgreSQL中为Bytea数据类型设置唯一约束

5
我正在将图片存储在PostgreSQL的Bytea数据类型中。我知道这不是推荐的做法,但我认为对于我的使用方式来说,组织图片的好处大于缺点。我面临的问题是,我想确保只有唯一的图片被插入,但是当我创建唯一约束时,我会收到以下错误:

ERROR: index row requires 28120 bytes, maximum size is 8191

在将图片插入到PostgreSQL的Bytea数据类型中时,如何检查唯一性?

1个回答

8
在摘要上创建唯一索引:
CREATE UNIQUE INDEX idx_image_hash ON images (digest(img, 'sha1'));

假设您已安装了pgcrypto扩展:

CREATE EXTENSION pgcrypto;

1
我可以使用这个来为两列创建唯一约束吗?一个是图片列,另一个是整数列? - Arya
@Arya:我不确定我是否理解。多列上的唯一约束看起来像是这样的CREATE UNIQUE INDEX idx_image_hash ON images (my_int_col, digest(img, 'sha1')); - teppic

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接