Sebagai contoh kita memiliki table database
CREATE TABLE `user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(20) NOT NULL, `password` text NOT NULL, `created_by` int(11) NOT NULL, PRIMARY KEY (`user_id`), KEY `created_by` (`created_by`), CONSTRAINT `user_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1; CREATE TABLE `client` ( `client_id` int(11) NOT NULL AUTO_INCREMENT, `client_name` varchar(20) NOT NULL, `created_by` int(11) NOT NULL, PRIMARY KEY (`client_id`), KEY `created_by` (`created_by`), CONSTRAINT `client_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Waktu akan menambahkan user, proses tersebut akan gagal, karena kita belum memiliki user ;), usernya masih kosong sementara untuk menambah data kedalam tabel user dan client harus memiliki user_id,
perintah untuk menambahkan user di MySQL bisa dengan cara
INSERT INTO `belajar`.`user` (`user_id`, `user_name`, `password`, `created_by`) VALUES (NULL, 'jaranguda', MD5('jaranguda.com'), 0);
Error yang muncul kurang lebih
#1452 - Cannot add or update a child row: a foreign key constraint fails (`belajar`.`user`, CONSTRAINT `user_ibfk_1` FOREIGN KEY (`created_by`) REFERENCES `user` (`user_id`) ON DELETE CASCADE ON UPDATE CASCADE)
Coba login ke MySQL anda, atau menggunakan phpMyAdmin dan ketik perintah berikut
ALTER TABLE `user` CHANGE `created_by` `created_by` INT( 11 ) NULL ;
sekarang coba ubah query untuk menambahkan database menjadi
INSERT INTO `belajar`.`user` (`user_id`, `user_name`, `password`, `created_by`) VALUES (NULL, 'jaranguda', MD5('jaranguda.com'), NULL);
data berhasil masuk :)
Untuk database lengkapnya bisa di download dibawah ini
atribut created_by itu apa ya ?
integer