php - 唯一约束,如何避免重复

标签 php mysql

根据我之前的查询that post我有一张看起来像这样的 table :

|| *nid* || *language* ||
|| 8 || Chinese ||
|| 8 || Portuguese ||
|| 8 || German |

其中 'nid' 和 'language' 有唯一约束。

使用此设置,我如何确保在尝试插入新行时不会有任何重复项?

已编辑

我想我应该尝试进行如下查询:

SELECT * FROM lang WHERE nid = $nid AND language = $lang

如果返回 FALSE,那么我知道我现在可以插入我的数据了。这是正确的吗?

最佳答案

通过创建唯一键来强制执行唯一约束:

ALTER TABLE the_table
ADD UNIQUE INDEX nid_language_unique (nid, language);

此约束禁止两行具有相同的 nid 和语言。

任何试图违反约束的查询都将失败。

因为你想忽略错误(并且仍然中止查询),你可以使用 INSERT IGNOREUPDATE IGNORE :

INSERT IGNORE INTO the_table (nid, language) VALUES (8, 'Chinese')
/* row not inserted and no error */

关于php - 唯一约束,如何避免重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405619/

相关文章:

php - echo 从不显示来自mysql的空白文本内容

php、mysql选择

Cron mysqldump,无法读取 '/etc/my.cnf.d' 的目录(错误代码 : 2)

带有两个时间戳的 PHP If 语句

php - 多维数组中的求和值(选择多行多列)

php - 模仿 CodeIgniter 中退出的使用的类似方法

php - 在 php 中使用 "../"向上一级不起作用?

php - 如何比较 mysql 查询中存储为 varchar 的日期?

PHP和mysql字符集问题

java - 使用java从数据库中获取数据