mysql - 通过匹配字段的子集来防止重复条目

标签 mysql sql database-design constraints

我有一个插入语句,可将标签插入表中。每个标签都有一个唯一的id(用于引用)、一个vid_id(用于匹配视频)和一个name(例如tag1) 。

重复的条目将被视为具有 vid_idname 的现有条目,与插入的内容相同。

如何停止插入与 2/3 字段匹配的重复条目?

$sql="INSERT into tags (id,vid_id,name) VALUES (?,?,?)";
$stmt16 = $conn->prepare($sql);
$result=$stmt16->execute(array($id,$vid_id,$tag));

最佳答案

您只需创建一个由 vid_idname 组成的唯一约束即可,一切就绪!

这就是你的做法:

alter table tags add unique (vid_id, name);

创建后,您的唯一约束将禁止插入在给定您的唯一定义(涉及的字段)的情况下会产生重复行的值。

更新也是如此(啊,你想过吗?):如果你尝试更新一条记录并且更新将产生重复记录,则唯一约束将阻止它。

关于mysql - 通过匹配字段的子集来防止重复条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6513115/

相关文章:

javascript - 修改 sphider search.php 文件并帮助我

mysql - 这个 mySQL 查询有什么问题?

c# - 将数据表中的多行连接到数组中

sql - 在存储过程中使用 WITH,postgres

database-design - 值应该始终使用特定单位(例如米)存储在数据库中还是应该在附加字段中设置单位?

mysql - 将 MySql 表转换为 BerkelyDB

mysql - mysql concat 可以只接受两个参数吗

MySQL SQL 性能需要一些改进

database-design - 在数据库中记录用户事件的最佳方式?

mysql - 我怎样才能最好地保持表中两列之间的完整性?