Если вы действительно хотите написать свой (рабочий) запрос ..
INSERT INTO groupdentlink (
f_dent_id, f_group_id, f_schedule_id
) SELECT
'$_POST[id]' f_dent_id,
'$groupid' f_group_id,
'$scheduleid' f_schedule_id
FROM DUAL
WHERE NOT EXISTS (
SELECT 1
FROM `groupdentlink`
WHERE
f_dent_id = '$_POST[id]' AND f_group_id = '$groupid'
LIMIT 1 -- will stop mysql to stop searching after first match
)
... но MySQL может обработать все это для вас!
Вам не нужны первичные ключи, чтобы MySQL справился с этим за вас, вы должны добавить ограничение UNIQUE
для комбинированного набора из двух столбцов.
Запрос на добавление уникального ключа dent_group_uniq_key
к groupdentlink
.
ALTER TABLE groupdentlink ADD UNIQUE KEY `dent_group_uniq_key` (
f_dent_id, f_group_id
);
Тогда используйте INSERT IGNORE
для вашего запроса:
INSERT IGNORE INTO groupdentlink (
f_dent_id, f_group_id, f_schedule_id
) VALUES (
'$_POST[id]', '$groupid', '$scheduleid'
)
INSERT IGNORE
попытается вставить строку в вашу таблицу, если она потерпит неудачу из-за ограничения ключа, она будет действовать так, как будто ничего не происходит.