Apakah itu mungkin?
Kasus penggunaan saya adalah tabel buku besar, dengan persyaratan bahwa setelah catatan dibuat, itu harus hanya-baca, yaitu tidak ada yang harus dapat mengedit atau menghapusnya. Ini hanya berlaku untuk tabel buku besar dan tabel dengan hubungan langsung dengannya - ada tabel lain dalam skema yang sama yang akan diperbarui / dihapus seperti biasa.
Pemahaman saya adalah bahwa untuk keperluan integritas data, kendala semacam ini harus diterapkan pada lapisan basis data, tetapi saya tidak dapat menemukan cara yang bersih dan diterima secara luas untuk melakukan ini - apakah ini kasus penggunaan di mana saya lebih baik melakukannya di lapisan aplikasi?
Yang ideal akan menjadi cara untuk melakukannya dalam SQL biasa, sehingga menjadi agnostik dari apa platform DB digunakan, karena itu dapat berubah, tapi saya menyadari bahwa mungkin terlalu banyak bertanya, jadi jika memiliki untuk menjadi tergantung pada platform, beberapa rasa MySQL lebih disukai.
Terima kasih!
sumber
Izin tampaknya menjadi pilihan yang jelas - namun Anda juga bisa menggunakan Mesin Penyimpanan ARCHIVE . Mesin tabel ini dirancang untuk merekam sejumlah besar data yang tidak akan berubah:
Perbedaannya dengan izin adalah bahwa seseorang dengan hak istimewa yang diperluas masih akan dapat mengubah data pada sebagian besar jenis tabel lainnya, sementara ARCHIVE tidak mengizinkan siapa pun untuk mengubah data yang sudah ada di dalam tabel.
sumber
REPLACE
semacamUPDATE
! "REPLACE bekerja persis seperti INSERT, kecuali jika baris lama dalam tabel memiliki nilai yang sama dengan baris baru untuk KUNCI UTAMA atau indeks UNIK, baris lama dihapus sebelum baris baru dimasukkan. Lihat Bagian 13.2.5 , "INSERT Syntax". "Lihat ke " Arsitektur Arsitektur Titik Waktu " atau " Arsitektur Database Temporal "
Desain Basis Data: Titik Arsitektur Waktu
Database temporal
Ide dasar keduanya adalah bahwa Anda perlu menambahkan data tanpa menghapus - atau menyimpan data sedemikian rupa sehingga Anda dapat menarik data seperti yang ada saat ini ... atau ada pada waktu sebelumnya.
pertanyaan terkait di sini: bagaimana-membuat-titik-dalam-waktu-arsitektur-di-mysql ,
sumber