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! Tipe tipe data apa saja pada MySQL?Secara umum tipe data pada MySQL dibagi menjadi 4 yaitu: Numeric Values yaitu angka atau bilangan seperti 10; 123; 100.50; -10; 1.2E+17; 2.7e-11; dan sebagainya.. DATETIME. Kombinasi tanggal dan waktu. ... . DATE. Kombinasi tanggal dan waktu. ... . TIMESTAMP. TIMESTAMP [(M)] ... . Apa saja perintah Alter?ALTER: Perintah alter digunakan untuk melakukan perubahan struktur tabel yang telah dibuat. Misalnya, menambah Field (Add), mengganti nama Field (Change) ataupun menamakannya kembali (Rename), dan menghapus Field (Drop). Dengan contoh ALTER TABLE nama_tabel ADD nama_kolom datatype.
Apakah kita dapat merubah nama tabel dalam MySQL bagaimana query nya?Perintah SQL (Structured Query Language) yang dipakai untuk mengubah nama tabel dalam database MySQL adalah perintah RENAME TABLE. Dengan perinah ini Kita dapat menguba nama tabel A menjadi tabel B, atau sebaliknya.
Apakah perintah yang berguna mengubah struktur sebuah tabel yang sudah terbuat?Perintah ALTER berfungsi untuk mengubah struktur tabel yang telah dibuat. Adapun diantaranya yakni mengubah nama tabel, menambah kolom, mengubah kolom, menghapus kolom, dan memberikan atribut pada kolom.
|