我有一个连接到数据库的网站。在其一张表中,一个非主键的实体属性需要在该表中是唯一的。
目前,我正在查询数据库,然后将值插入该列以检查该值是否已存在。如果是这样,我的脚本会更改该值,并再次启动相同的过程,直到没有返回结果,这意味着数据库中尚不存在该值。
虽然这有效,但我觉得它对性能要求很高 - 即使值是唯一的,数据库也需要至少查询两次:一次用于检查,一次用于写入。
为了提高性能并使我的(可能有错误/不必要的)代码过时,我有想法将列标记为唯一键并使用 try/catch block 进行写入/错误处理过程。这样,数据库引擎需要处理唯一性,这似乎比我的查询写入过程更合理一些。
这是一个好主意还是唯一键不是为这种行为而设计的? SQL 数据库中唯一键的典型用例是什么?
最佳答案
INSERT INTO table (uniquerow) VALUES(1) ON DUPLICATE KEY UPDATE uniquerow = 1;
使用此语句,如果 key 唯一,则可以插入;如果 key 已存在,则可以更新。
通过唯一约束,您可以检查值的元组是否存在多次,而无需成为主键。
关于php - 如何使用 PHP 确保 MySQL DB 表中值的唯一性 – 唯一键用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29779738/