今天同事问到,要把一个超长的字段做一个唯一性约束,text类型和大于varchar(255)类型,都无法用unique。
经过Google后,得到一个很好的思路:就是新建一个字段,和这个超长的字段对应,运用加密方式将原字段内容通过加密方式缩短,并能做到唯一(MD5 - SHA1 - RAND - UNIQUEID - TIME - CRC32)。通过对新建的字段做唯一性约束,就能达到最终的目的!
Google 代码:
myId int(11) NOT NULL AUTO_INCREMENT,
myText TEXT,
myUnique VARCHAR(255) NOT NULL DEFAULT '0',
UNIQUE KEY myUnique (myUnique)
$text='the long text to be inserted the long text to be inserted the long text to be inserted the long text to be inserted';
//assuming field name (mylongtextfield)
$result=mysql_query("SELECT id FROM mytable WHERE md5(mylongtextfield)='".md5($text)."'";
if(!$result){
//do your insert query
}else{
echo "the text already exist!";
}