предотвратить повторяющиеся записи путем сопоставления подмножества полей - PullRequest
0 голосов
/ 29 июня 2011

У меня есть оператор вставки, который вставляет теги в таблицу. Каждый тег имеет уникальный id (для ссылки), vid_id (для соответствия видео) и name (например, tag1).

Будет считаться, что дублирующаяся запись имеет существующую запись с vid_id и name такой же, как и любая вставляемая

Как остановить вставку для повторяющейся записи, которая соответствует 2/3 полям?

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

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

Вам просто нужно создать уникальный запрет, составленный из vid_id и name, и все готово!

Вот как вы это делаете:

alter table tags add unique (vid_id, name);

После созданияВаше уникальное ограничение будет запрещать вставку значений, которые будут давать повторяющиеся строки с учетом вашего уникального определения (соответствующие поля).

Это также верно для обновлений (а вы об этом думали?): если вы попытаетесьчтобы обновить запись, и обновление произведет дубликат, уникальное ограничение заблокирует ее.

1 голос
/ 29 июня 2011

создать уникальный индекс для этих 2 столбцов.

...