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

时间:2011-06-28 21:09:43

标签: 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));

2 个答案:

答案 0 :(得分:2)

你只需要创建一个由vid_idname组成的独特约束,你就完全了!

您就是这样做的:

alter table tags add unique (vid_id, name);

一旦创建,您的唯一约束将禁止插入值,这些值将根据您的唯一定义(涉及的字段)产生重复行。

对于更新也是如此(啊,你有没有?):如果你试图更新记录并且更新会产生重复,那么唯一约束会阻止它。

答案 1 :(得分:1)

在这两列上创建一个唯一索引。