Nếu bạn thực sự muốn viết truy vấn (đang hoạt động) của riêng mình ..
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
)
... nhưng MySQL có thể xử lý tất cả những điều này cho bạn!
Bạn không cần khóa chính để MySQL xử lý việc này cho bạn, bạn nên thêm UNIQUE
ràng buộc khóa trên tập hợp kết hợp của hai cột.
Truy vấn thêm khóa duy nhất dent_group_uniq_key
tới groupdentlink
.
ALTER TABLE groupdentlink ADD UNIQUE KEY `dent_group_uniq_key` (
f_dent_id, f_group_id
);
Sau đó sử dụng INSERT IGNORE
trên truy vấn của bạn:
INSERT IGNORE INTO groupdentlink (
f_dent_id, f_group_id, f_schedule_id
) VALUES (
'$_POST[id]', '$groupid', '$scheduleid'
)
INSERT IGNORE
sẽ cố gắng chèn một hàng vào bảng của bạn, nếu hàng không thành công do hạn chế về khóa, nó sẽ hoạt động như không có gì xảy ra.