आपके द्वारा चुने जा रहे कॉलम के बारे में आपको विशिष्ट होना चाहिए। यदि आपका user
तालिका में चार कॉलम थे id, name, username, opted_in
आपको क्वेरी से ठीक उन चार कॉलमों का चयन करना होगा। सिंटैक्स ऐसा दिखता है:
INSERT INTO user (id, name, username, opted_in)
SELECT id, name, username, opted_in
FROM user LEFT JOIN user_permission AS userPerm ON user.id = userPerm.user_id
हालांकि, user_permission
. के खिलाफ शामिल होने का कोई कारण नहीं दिखता है यहां, चूंकि उस तालिका का कोई भी स्तंभ user
. में नहीं डाला जाएगा . वास्तव में, यह INSERT
प्राथमिक कुंजी विशिष्टता उल्लंघनों के साथ विफल होना तय लगता है।
MySQL एक ही समय में एकाधिक तालिकाओं में सम्मिलित करने का समर्थन नहीं करता है। आपको या तो दो INSERT
करने की आवश्यकता है पहली क्वेरी से अंतिम इंसर्ट आईडी का उपयोग करके अपने कोड में स्टेटमेंट, या AFTER INSERT
बनाएं प्राथमिक तालिका पर ट्रिगर करें।
INSERT INTO user (name, username, email, opted_in) VALUES ('a','b','c',0);
/* Gets the id of the new row and inserts into the other table */
INSERT INTO user_permission (user_id, permission_id) VALUES (LAST_INSERT_ID(), 4)
या ट्रिगर का उपयोग करना :
CREATE TRIGGER creat_perms AFTER INSERT ON `user`
FOR EACH ROW
BEGIN
INSERT INTO user_permission (user_id, permission_id) VALUES (NEW.id, 4)
END