Apakah "id" Primary Key bisa di ubah?

halo gan, saya mau tanya, saya mau ubah "id" primary key kok gak bs ya? atau memang primary key sifatnya tidak bs diubah ya datanya? (btw ubahnya lewat website nya bukan di databse)
avatar dynemix

Ditanyakan oleh @dynemix

11 Kontribusi 2 Poin

Login untuk menanggapi


Jawaban

Bukan nggak bisa, tapi sudah nyangkut atau terhubung ke tabel lain.
Misal saya di sekolahkoding punya id user tertentu. Saya sudah tulis beberapa pertanyaan & jawaban (ada tabel pertanyaan dan jawaban dengan id user saya). Kalo id user saya diganti, tabel pertanyaan dan jawaban gak punya id user, yang nulis nanti gak jelas siapa.

Kenapa id diubah, tabel yg lain gak ikut otomatis? Ya karena memang id itu aslinya tidak boleh diubah, jadi gak ada fitur seperti itu.

Kalo memang ntah alasan apa harus diubah, triknya bikin id baru dulu. Trus tabel2 yang ngambil foreign key diganti dengan yang baru. Terakhir, hapus id yg lama.
avatar ChronoJava

Dijawab oleh @ChronoJava

40 Kontribusi 21 Poin

Login untuk menanggapi


Oke gan, makasih banget atas penjelasan nya🙏🏻👍, tapi kenapa ya klo ubah "id" nya lewat database nya langsung bisa?
avatar dynemix

Dijawab oleh @dynemix

11 Kontribusi 2 Poin

  • kok di database langsung bisa? Ada 2 kemungkinan. 1. Id belum dipanggil di tabel lain. Kalo dalam contoh sebelumnya artinya saya belum pernah nulis di sekolahkoding, jadi belum nyangkut. 2. Bikinnya gak pake constraint. Artinya bisa jadi ada tulisan tapi gak ada penulisnya, karena id bisa diubah & bahkan dihapus. - @ChronoJava
  • Kalo kemungkinannya adalah kemungkinan pertama artinya ada yg bermasalah di webnya. Cuma mungkin kalo pake framework emang udah standarnya gitu kali gan, karena memang aslinya gak boleh diubah. - @ChronoJava

Login untuk menanggapi


Iya gan, klo logikanya sih emg "id" itu emg gbs diubah² takutnya ketimpa sama penulis lain (cth kasus yg udh dijelaskan). Kebetulan saya pake laravel yg sistem security nya yg agak"lebay" hehe. Tp feeling saya sih yg agan bilang trakhir tadi "mungkin framework standarnya memang "id" nya gak boleh diubah", kecuali klo mau "cheating" bisa langsung masuk ke database. Oke deh gan makasih bgt info nya ya 🙏🏻👍
avatar dynemix

Dijawab oleh @dynemix

11 Kontribusi 2 Poin

Login untuk menanggapi


Di database ada istilah CASCADE. 
kamu bisa menentukan kalau id tersebut ON CASCADE saat di update atau saat dihapus.
Secara otomatis dia akan mencari di table lain, yang punya refrensi ke id tersebut dan mengubahnya.

contoh on UPDATE CASCADE:
ALTER TABLE books 
ADD CONSTRAINT fk_books_warehouses_warehouse_id
FOREIGN KEY (warehouse_id)
REFERENCES warehouses (id)
ON UPDATE CASCADE;

Untuk framework seperti laravel juga ada, digunakan saat migration table

contoh on DELETE cascade di laravel

$table->foreignId('user_id')
      ->constrained()
      ->onDelete('cascade')
silahkan cek dokumentasi migration laravel untuk lebih detail
avatar hilmanski

Dijawab oleh @hilmanski

2206 Kontribusi 1805 Poin

Login untuk menanggapi


sudah saya kasih cascade gan, ON UPDATE CASCADE dan ON DELETE CASCADE

tapi yg berfungsi cmn yg delete gan, apa gara2 dia PK makanya tidak bisa diubah ya? takutnya kan klo untuk pekerjaan masa depan bisa ketimpa (cth: id=50, mau saya ubah jadi id=51, sedangkan id=51 sudah ada datanya.)tp untuk kasus saya id=51 blm ada datanya, logikanya kan bisa buat update ke id=51 ya?
avatar dynemix

Dijawab oleh @dynemix

11 Kontribusi 2 Poin

Login untuk menanggapi


Login untuk gabung berdiskusi