Als je echt je eigen (werkende) query wilt schrijven..
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
)
... maar MySQL kan dit allemaal voor je aan!
U hebt geen primaire sleutels nodig om MySQL dit voor u te laten afhandelen, u moet een UNIQUE
toevoegen sleutelbeperking op de gecombineerde set van de twee kolommen.
Vraag om de unieke sleutel toe te voegen dent_group_uniq_key
naar groupdentlink
.
ALTER TABLE groupdentlink ADD UNIQUE KEY `dent_group_uniq_key` (
f_dent_id, f_group_id
);
Gebruik dan INSERT IGNORE
op uw vraag:
INSERT IGNORE INTO groupdentlink (
f_dent_id, f_group_id, f_schedule_id
) VALUES (
'$_POST[id]', '$groupid', '$scheduleid'
)
INSERT IGNORE
zal proberen een rij in uw tabel in te voegen, als dit niet lukt vanwege een sleutelbeperking, zal het doen alsof er niets gebeurt.