0

我有一个包含(简化的comments)行id、、article_id和。user_idtext

现在我有了一个想法。我可以通过某种方式创建一个唯一索引article_iduser_idtext防止直接从数据库设计中重复发布吗?

我该怎么做,因为text它来自类型TEXT并且拒绝被索引?

4

2 回答 2

1

你的意思是防止意外双击“保存”按钮?或者防止在一周后发布相同的确切文本?如果是第一个,可能只是在第一次单击时禁用您的按钮。如果是第二个,您可能应该在您的文本字段上运行一个哈希函数,以查看该用户在该文章中是否已经存在匹配项。或者添加一个额外的字段,它是您的文本字段的哈希函数,并使用它创建您唯一的复合键。喜欢这里

于 2013-03-29T03:23:52.570 回答
1

INDEXTEXT字段上创建一个,您需要指定索引长度,就像错误提示一样。这只会索引您的文本字段的一部分,因此您可能需要考虑使用不同的字段作为索引的一部分,例如DATE字段 - 文章名称在当天是唯一的,或者类似的东西。

INDEX UniqueArticle (article_id, user_id, text(100));

对于 MyISAM 表

The maximum key length is 1000 bytes. This can also be changed by changing the source and recompiling. For the case of a key longer than 250 bytes, a larger key block size than the default of 1024 bytes is used.

对于 InnODB 表

Index key prefixes can be up to 767 bytes. See [Section 12.1.8, “CREATE INDEX Syntax”][1].

见:http ://dev.mysql.com/doc/refman/5.6/en/create-table.html

另请参阅:在 mysql 表中使用 TEXT 字段时出现问题

于 2013-03-29T03:29:16.573 回答