Anda harus spesifik tentang kolom yang Anda pilih. Jika user
. Anda tabel memiliki empat kolom id, name, username, opted_in
Anda harus memilih dengan tepat keempat kolom tersebut dari kueri. Sintaksnya terlihat seperti:
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
Namun, tampaknya tidak ada alasan untuk bergabung dengan user_permission
di sini, karena tidak ada kolom dari tabel itu yang akan dimasukkan ke user
. Faktanya, INSERT
. ini tampaknya pasti akan gagal dengan pelanggaran keunikan kunci utama.
MySQL tidak mendukung penyisipan ke beberapa tabel secara bersamaan. Anda juga perlu melakukan dua INSERT
pernyataan dalam kode Anda, menggunakan id sisipan terakhir dari kueri pertama, atau buat AFTER INSERT
pemicu di tabel utama.
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)
Atau menggunakan pemicu :
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