Pokud opravdu chcete napsat svůj vlastní (pracovní) dotaz...
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
)
... ale MySQL tohle všechno zvládne za vás!
Nepotřebujete primární klíče, aby to MySQL zvládlo za vás, měli byste přidat UNIQUE
klíčové omezení na kombinovanou sadu dvou sloupců.
Dotaz na přidání jedinečného klíče dent_group_uniq_key
na groupdentlink
.
ALTER TABLE groupdentlink ADD UNIQUE KEY `dent_group_uniq_key` (
f_dent_id, f_group_id
);
Poté použijte INSERT IGNORE
na váš dotaz:
INSERT IGNORE INTO groupdentlink (
f_dent_id, f_group_id, f_schedule_id
) VALUES (
'$_POST[id]', '$groupid', '$scheduleid'
)
INSERT IGNORE
se pokusí vložit řádek do vaší tabulky, pokud selže kvůli omezení klíče, bude se chovat, jako by se nic nestalo.