【发布时间】:2016-08-20 15:41:22
【问题描述】:
是否有解决方案可以在 MySQL 中为每个 ID 维护一个唯一的 VARCHAR(65535) 字段?
【问题讨论】:
-
每个 ID 唯一 - 这是什么意思?
-
ID 是主键实体。
标签: mysql constraints unique varchar
是否有解决方案可以在 MySQL 中为每个 ID 维护一个唯一的 VARCHAR(65535) 字段?
【问题讨论】:
标签: mysql constraints unique varchar
我会对字段的值使用散列函数并将其存储在同一张表上的单独唯一字段中。
所以你的桌子应该是这样的:
create table my_table (
id integer not null primary key,
text_content varchar(65535) not null,
text_hash varchar(128) not null unique
);
在该表上插入时,您将为 text_content 字段计算 sha256 哈希并将其存储在 text_hash 字段中。这样您就可以确定text_content 值在您的表中是唯一的。
如果您喜欢 DB SIDE 编程,您可以将此逻辑放在触发器上,前提是 MySQL 支持它们。
【讨论】:
text_hash varchar(128) as sha2(text_content, 256) unique。这样,您可以将所有内容保留在表定义中。您的应用程序中不需要触发器或其他代码。