根据我之前的查询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 IGNORE和 UPDATE 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/