我有一个表,我有一个带有URL的文本字段,我不希望任何行有重复的URL,但我不想在插入之前进行检查,是否无法使文本字段唯一或你能建议使用另一种字段吗?
解决方案基本上是在像field_hash这样的数据库上添加一个额外的字段,使其为VARCHAR和Index赋予唯一性.
CREATE TABLE 'info' (
'text' text NOT NULL,
'text_hash' varchar(40) NOT NULL,
PRIMARY KEY ('id'),
UNIQUE KEY 'text_hash' ('text_hash')
);
$text = 'Full Text';
$text_hash = sha1($text);
mysql_query("INSERT INTO info (text, text_hash) VALUES ('$text', '$text_hash')");
Run Code Online (Sandbox Code Playgroud)
如果数据库中的文本字段设置为唯一或主键,或者您设置了它,则插入语句将在尝试输入重复时失败.这样你应该做的就是妥善处理失败的插入物并且你有它.
正如其他地方所指出的,您不能将实际的TEXT字段设置为唯一,但如果您使用的是varchar字段,那么它是可行的.这可能并不重要(可能只是一种误传),因为如果您将URL存储在TEXT字段中,您还需要担心其他问题.