Dalam tutorial ini, Anda akan belajar cara rename table mysql menggunakan statement MySQL RENAME TABLE dan statement ALTER TABLE.
Biasanya karena requirement pada business flow berubah, terkadang kita mau tidak mau harus untuk mengganti nama tabel saat ini menjadi tabel baru yang lebih sesuai dengan business flow yang baru. MySQL memberi kita statement yang sangat berguna untuk mengubah nama tabel
Untuk mengubah satu atau lebih table , kita menggunakan statement MYSQL RENAME TABLE sebagai berikut:
RENAME TABLE nama_table_lama TO nama_table_baru;
Table lama (nama_table_lama) harus ada, dan table baru (nama_table_baru) tidak boleh ada. Jika tabel baru dengan nama nama_table_baru memang ada, maka statement akan gagal.
Selain table , kita dapat menggunakan statement RENAME TABLE untuk mengganti nama view.
Sebelum kita mengeksekusi statement RENAME TABLE, kita harus memastikan bahwa tidak ada transaksi yang aktif atau table yang terkunci.
Dalam hal keamanan, setiap hak istimewa yang ada yang kami berikan ke tabel lama harus dipindahkan secara manual ke tabel baru.
Sebelum mengganti nama tabel, Anda harus mengevaluasi dampaknya secara menyeluruh. Misalnya, Anda harus menyelidiki aplikasi mana yang menggunakan tabel. Jika nama tabel berubah, maka kode aplikasi yang mengacu pada nama tabel tersebut juga perlu diubah.
Selain itu, Anda harus secara manual menyesuaikan objek database lain seperti tampilan, prosedur tersimpan, pemicu, batasan kunci asing, dll., yang merujuk ke tabel. Kita akan membahas ini secara lebih rinci dalam contoh-contoh berikut.
Contoh MySQL RENAME TABLE
Pertama, kita membuat database baru bernama hr yang terdiri dari dua tabel: employees dan departments
untuk demonstrasi.
CREATE DATABASE IF NOT EXISTS hr;
CREATE TABLE departments (
department_id INT AUTO_INCREMENT PRIMARY KEY,
dept_name VARCHAR(100)
);
CREATE TABLE employees (
id int AUTO_INCREMENT primary key,
first_name varchar(50) not null,
last_name varchar(50) not null,
department_id int not null,
FOREIGN KEY (department_id)
REFERENCES departments (department_id)
);
Kedua, kita masukkan data sampel ke dalam tabel employees dan departments:
INSERT INTO departments(dept_name)
VALUES('Sales'),('Marketing'),('Finance'),('Accounting'),('Warehouses'),('Production');
INSERT INTO employees(first_name,last_name,department_id)
VALUES('John','Doe',1),
('Bush','Lily',2),
('David','Dave',3),
('Mary','Jane',4),
('Jonatha','Josh',5),
('Mateo','More',1);
Ketiga, kita meninjau data di tabel depertments dan employees:
SELECT
department_id, dept_name
FROM
departments;
SELECT
id, first_name, last_name, department_id
FROM
employees;
Jika tabel yang akan Anda ganti namanya direferensikan oleh view, view akan menjadi tidak valid jika Anda mengganti nama tabel, dan Anda harus menyesuaikan view secara manual.
Misalnya, kita membuat view bernama v_employee_info berdasarkan tabel employees dan departments sebagai berikut:
CREATE VIEW v_employee_info as
SELECT
id, first_name, last_name, dept_name
from
employees
inner join
departments USING (department_id);
View menggunakan inner join untuk menggabungkan tabel departments dengan employees. Statement SELECT berikut mengembalikan semua data dari view v_employee_info.
SELECT
*
FROM
v_employee_info;
Sekarang kita ganti nama table employees menjadi tabel people dan meminta data dari view v_employee_info lagi.
RENAME TABLE employees TO people;
SELECT
*
FROM
v_employee_info;
MySQL akan mengembalikan pesan kesalahan seperti berikut:
Error Code: 1356. View 'hr.v_employee_info' references invalid table(s) or
column(s) or function(s) or definer/invoker of view lack rights to use them
Kita dapat memperbaiki kesahalan tersebut dengan menggunakan statement CHECK TABLE untuk memeriksa status tampilan v_employee_info sebagai berikut:
CHECK TABLE v_employee_info;
Setelah itu kita perlu mengubah view v_employee_info secara manual sehingga merujuk ke tabel people , bukan tabel employees.
CREATE VIEW v_employee_info as
SELECT
id, first_name, last_name, dept_name
from
people
inner join
departments USING (department_id);
Penutup
Pada artikel ini kita sudah belajar bagaimana cara rename table di MySQL dengan menggunakan statement MYSQL RENAME TABLE. semoga bermanfaat
Jangan lupa kunjungi Ruang Koding untuk update terbaru lainnya.