根据我之前的查询帖子我有一个看起来像这样的表:
|| *nid* || *language* ||
|| 8 || Chinese ||
|| 8 || Portuguese ||
|| 8 || German |
Run Code Online (Sandbox Code Playgroud)
其中'nid'和'language'具有唯一约束.
使用此设置,当我尝试插入新行时,如何确保那里不会有任何重复?
EDITED
我猜我应该尝试进行如下查询:
SELECT * FROM lang WHERE nid = $nid AND language = $lang
Run Code Online (Sandbox Code Playgroud)
如果这返回FALSE,那么我知道我现在可以插入我的数据.它是否正确 ?
通过创建唯一键来强制执行唯一约束:
ALTER TABLE the_table
ADD UNIQUE INDEX nid_language_unique (nid, language);
Run Code Online (Sandbox Code Playgroud)
此约束禁止两行具有相同的nid和语言.
任何试图违反约束的查询都将失败.
由于您要忽略错误(并且仍然中止查询),您可以使用INSERT IGNORE和UPDATE IGNORE:
INSERT IGNORE INTO the_table (nid, language) VALUES (8, 'Chinese')
/* row not inserted and no error */
Run Code Online (Sandbox Code Playgroud)