Sehebat apapun kita sebagai manusia, kita pasti pernah melakukan kecerobohan. Seorang developer yang sudah master pun terkadang tidak lepas dari yang namanya keteledoran. Ketika kita sudah merancang sistem yang kita anggap sudah sempurna, ternyata ada satu kesalahan kecil yang terlewat dari pandangan mata. Salah satu kasus yang dapat terjadi adalah, misalnya saja, ketika merancang basis data. Show Sebagai contoh, kita mempunyai database bernama Rancangan tabel dari ilustrasi tersebut dapat dilihat pada Gambar 1 dan query definisi basis datanya dapat dilihat pada Kode 1. -- -- Kode 1: Table structure for table `negara` -- CREATE TABLE `negara` ( `negara_id` int(11) NOT NULL, `nama` varchar(100) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Indexes for table `negara` -- ALTER TABLE `negara` ADD PRIMARY KEY (`negara_id`); -- -- AUTO_INCREMENT for table `negara` -- ALTER TABLE `negara` MODIFY `negara_id` int(11) NOT NULL AUTO_INCREMENT; -- -------------------------------------------------------- -- -- Table structure for table `alat_musik` -- CREATE TABLE `alat_musik` ( `alat_musik_id` int(11) UNSIGNED NOT NULL, `nama` varchar(100) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Indexes for table `alat_musik` -- ALTER TABLE `alat_musik` ADD PRIMARY KEY (`alat_musik_id`); -- -- AUTO_INCREMENT for table `alat_musik` -- ALTER TABLE `alat_musik` MODIFY `alat_musik_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT; -- -------------------------------------------------------- -- -- Table structure for table `alat_musik_favorit` -- CREATE TABLE `alat_musik_favorit` ( `negara_id` int(11) NOT NULL, `alat_musik_id` int(11) UNSIGNED NOT NULL, `persentase_dominansi` float NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -- Indexes for table `alat_musik_favorit` -- ALTER TABLE `alat_musik_favorit` ADD PRIMARY KEY (`alat_musik_id`,`negara_id`), ADD KEY `fk_alat_musik_favorit_alat_musik_id` (`alat_musik_id`) USING BTREE, ADD KEY `fk_alat_musik_favorit_negara_id` (`negara_id`) USING BTREE; -- -- Constraints for table `alat_musik_favorit` -- ALTER TABLE `alat_musik_favorit` ADD CONSTRAINT `fk_alat_musik_favorit_alat_musik_id` FOREIGN KEY (`alat_musik_id`) REFERENCES `alat_musik` (`alat_musik_id`) ON UPDATE RESTRICT ON DELETE RESTRICT, ADD CONSTRAINT `fk_alat_musik_favorit_negara_id` FOREIGN KEY (`negara_id`) REFERENCES `negara` (`negara_id`) ON UPDATE RESTRICT ON DELETE RESTRICT; MasalahPada kasus ini database tersebut sudah di-deploy. Tetapi setelah saya melakukan pemeriksaan ulang,
ternyata ada suatu kesalahan yang telah saya buat, yaitu atribut kolom Pada Gambar 1, dapat dilihat bahwa setiap kolom primary key pada tabel SolusiDi MySQL, masalah ini dapat diatasi dengan query
Setelah di-lock, kita lakukan alter tabel untuk menghapus index foreign key yang akan diubah atributnya, kemudian barulah kita bisa mengubahnya. Ketika selesai memanipulasi, jangan lupa untuk meng-unlock kembali tabelnya. Untuk kasus pada tulisan ini, query yang melakukan operasi perubahan atribut dari kolom foreign key
-- -- Kode 2: Query untuk mengubah atribut kolom foreign key `negara_id` -- /* Mengunci operasi write ke tabel terlebih dahulu, untuk menghindari resiko kerusakan integritas data */ LOCK TABLES alat_musik_favorit WRITE, negara WRITE; /* Drop foreign key dari tabel `alat_musik_favorit` agar dapat memodifikasi kolom `negara_id` */ ALTER TABLE alat_musik_favorit DROP FOREIGN KEY fk_alat_musik_favorit_negara_id, MODIFY negara_id INT(11) UNSIGNED; /* Jangan lupa modifikasi juga kolom yang sama pada tabel referensi */ ALTER TABLE negara MODIFY negara_id INT(11) UNSIGNED AUTO_INCREMENT; /* Setelah itu, atur kembali constraint dari foreign key tersebut */ ALTER TABLE alat_musik_favorit ADD CONSTRAINT fk_alat_musik_favorit_negara_id FOREIGN KEY (negara_id) REFERENCES negara (negara_id); /* Seluruh operasi sudah selesai dilakukan, sekarang unlock tabel yang sebelumnya di-lock */ UNLOCK TABLES; Setelah kamu berhasil mengeksekusi query tersebut, kolom Pada tulisan ini penjelasan yang saya sampaikan hanya untuk mengubah atribut kolom. Namun kamu juga bisa melakukan perubahan pada tipe data bahkan nama kolom foreign key. Sekian tulisan saya mengenai cara mengubah tipe data dan atribut foreign key di MySQL. Jika kamu merasa terbantu dengan penjelasan yang ada pada tulisan ini, bagikanlah kepada temanmu yang merasa membutuhkannya juga. Tetapi jika kamu menemui masalah, silakan tinggalkan pertanyaan pada kolom komentar. Terima kasih! Apa saja yang dapat diubah menggunakan perintah Alter?Perintah ALTER TABLE digunakan untuk menambah, menghapus, atau mengubah kolom dalam tabel. Perintah ALTER TABLE juga dapat digunakan untuk menambah dan menghapus berbagai batasan dalam tabel.
Apa perintah SQL yang digunakan untuk mengubah data di database?Perintah update data merupakan salah satu perintah SQL yang digunakan untuk mengubah data sesuai dengan kondisi yang diinginkan.
Berapa tipe kategori perintah pada SQL?Terdapat 3 (dua) jenis perintah SQL, yaitu DDL, DML dan DCL.
Apa itu update database?Query Update adalah cara untuk mengedit data yang telah diupload ke dalam suatu database apabila penulis salah dalam memasukkan data.
|