Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

जहां मौजूद नहीं है वहां डालें-प्राथमिक कुंजी के बिना

अगर आप वाकई अपनी खुद की (कामकाजी) क्वेरी लिखना चाहते हैं..

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 आपकी तालिका में एक पंक्ति सम्मिलित करने का प्रयास करेगा, यदि यह एक महत्वपूर्ण बाधा के कारण विफल हो जाता है तो यह कार्य करेगा जैसे कुछ नहीं होता।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL अस्थायी तालिका में शामिल हुए बिना GROUP BY DATE(table.timestamp) का उपयोग करते समय लापता तिथियों को भरने के लिए

  2. XAMPP का उपयोग करके mysql के साथ त्रुटि 2 में फंस गया

  3. हाइबरनेट:MySQLDialect और MySQLInnoDBdialect में क्या अंतर है?

  4. MySQL के साथ माता-पिता और बच्चों का चयन करें

  5. MySQL डेटाबेस का नाम बदलें