某些行已经存在时如何防止SQL插入?

时间:2017-09-07 09:43:11

标签: php mysql database

我有一个包含不同电影,演员,导演的数据库。

要将导演与电影联系起来我使用的表格中包含以下内容:

film_id director_id - 所以当我为电影添加导演时,必要的ID会被插入到此表中。

所以我已经有一堆id已经存在并且工作得很好。例如:

movie_id - director_id
10         15
11         17 
9          13

现在当我添加另一个导演让我们对 id 13 的电影说 id 9 时,我有两行完全相同这就是我不想发生的事情。如下所示:

movie_id - director_id
10         15
11         17 
9          13
9          13 

相反,当已经有一行具有相同 film_id 的行 director_id 时,它不应该插入。

如何防止这种情况发生?

1 个答案:

答案 0 :(得分:2)

只需从movie_iddirector_id列创建唯一键即可。

SQL示例:

ALTER TABLE `table_name` ADD UNIQUE `index_name` (`movie_id`, `director_id`);

然后为IGNORE查询添加INSERT,它将阻止Duplicate entry...错误消息。

SQL示例:

INSERT IGNORE INTO `table_name` (...) VALUES (...)

如果要在条目已存在的情况下更新某些数据,则可以使用ON DUPLICATE KEY UPDATE

SQL示例:

INSERT INTO `table_name` (...) VALUES (...) ON DUPLICATE KEY UPDATE `column` = [new_value]