php/mysql prevent duplicate entries over multiple columns

二次信任 提交于 2019-11-29 08:43:06

You can simply create a multiple-column index on these columns and enforce uniqueness: see the MySQL manual at http://dev.mysql.com/doc/refman/5.0/en/multiple-column-indexes.html.

For example, in a table with columns id (unique primary key), colA and colB, you run:

ALTER TABLE table ADD UNIQUE KEY (colA,colB)

This is it: any INSERTs leading to a duplicate entry in these two columns combined will now return a MySQL error instead of going through. If you use INSERT IGNORE, no MySQL error will be thrown if executing it would violate this unique constraint, and your INSERT statement would be quietly disregarded.

To make unique index for text types you can use

CREATE UNIQUE INDEX indexname ON `tablename` (columnname (100));

(100) here after columnname tells mysql to check only first 100 bytes as unique, if you specify (4) as length then both

hello
hello world

are same as index (both are actually hell in index tree) and mysql does not allow to insert them to table.

See here http://dev.mysql.com/doc/refman/5.0/en/create-index.html

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!