Halo Sobat Pada kesempatan kali ini, saya akan membahas bagaimana cara membuat kolom read-only di MySQL dan memberikan contoh tabel pada WordPress. Topik ini sangat berguna bagi Anda yang ingin menjaga integritas data dalam database. Mari kita mulai!
Versi MySQL dan MariaDB yang Didukung
Metode yang kita bahas di sini kompatibel dengan versi berikut:
- Trigger telah didukung sejak MySQL 5.0 dan MariaDB 5.3.
- Hak akses kolom (granular privileges) tersedia sejak MySQL 5.6 dan MariaDB 10.0.
- MariaDB 10.5 memperkenalkan perubahan izin dan fitur baru dalam mesin penyimpanan.
- MariaDB 10.9 menambahkan fungsi JSON_OVERLAPS untuk operasi data JSON.
Pastikan Anda menggunakan versi yang kompatibel agar fitur ini dapat berjalan dengan baik.
Membuat Kolom Read-Only di MySQL
MySQL tidak menyediakan fitur bawaan untuk menetapkan kolom tertentu sebagai read-only. Namun, ada beberapa pendekatan yang bisa diterapkan untuk mencegah pengeditan pada kolom tertentu, seperti ID dan post_author dalam tabel WordPress:
1. Menggunakan Trigger
Trigger BEFORE UPDATE
dapat digunakan untuk mencegah perubahan kolom tertentu. Berikut contoh penerapannya pada tabel wp_posts
:
DELIMITER $$ CREATE TRIGGER before_update_wp_posts BEFORE UPDATE ON wp_posts FOR EACH ROW BEGIN IF NEW.ID <> OLD.ID OR NEW.post_author <> OLD.post_author THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Kolom ID dan post_author tidak boleh diubah.'; END IF; END$$ DELIMITER ;
Dengan trigger ini, setiap upaya untuk mengubah kolom ID
atau post_author
dalam tabel wp_posts
akan ditolak.
2. Menggunakan Hak Akses (Privileges)
Anda juga dapat mengatur hak akses pengguna agar hanya dapat memperbarui kolom tertentu. Contoh untuk tabel wp_posts
:
-- Membuat user baru CREATE USER 'wp_editor'@'localhost' IDENTIFIED BY 'password'; -- Memberikan hak akses SELECT, INSERT, dan UPDATE hanya pada kolom tertentu GRANT SELECT, INSERT, UPDATE(post_title, post_content) ON wordpress.wp_posts TO 'wp_editor'@'localhost'; -- Terapkan perubahan hak akses FLUSH PRIVILEGES;
User wp_editor
hanya dapat memperbarui kolom post_title
dan post_content
, tetapi tidak dapat mengubah ID
atau post_author
.
Contoh Tabel WordPress
Berikut adalah contoh struktur tabel wp_posts
dalam database WordPress:
Nama Kolom | Tipe Data | Deskripsi |
---|---|---|
ID |
BIGINT(20) | Primary key, tidak boleh diubah. |
post_author |
BIGINT(20) | ID pengguna yang membuat postingan. |
post_title |
TEXT | Judul postingan. |
post_content |
LONGTEXT | Isi konten postingan. |
post_date |
DATETIME | Tanggal pembuatan postingan. |