Rumah > pangkalan data > tutorial mysql > Bagaimanakah Anda Boleh Menguatkuasakan Integriti Data dalam MySQL Apabila Kekangan Semakan Tidak Tersedia?

Bagaimanakah Anda Boleh Menguatkuasakan Integriti Data dalam MySQL Apabila Kekangan Semakan Tidak Tersedia?

Patricia Arquette
Lepaskan: 2024-11-27 02:01:11
asal
450 orang telah melayarinya

How Can You Enforce Data Integrity in MySQL When Check Constraints Are Not Available?

Mencegah Sisipan dan Kemas Kini dengan Pencetus dalam MySQL

MySQL tidak mempunyai keupayaan untuk menguatkuasakan kekangan semakan, menjadikannya perlu untuk meneroka kaedah alternatif untuk mencegah pengubahsuaian data tanpa kebenaran.

Pertimbangkan senario yang diterangkan, dengan atribut agensi dalam jadual foo hanya boleh mengambil nilai antara 1 dan 5.

Seseorang boleh cuba menggunakan pencetus untuk memintas sisipan atau kemas kini yang melanggar kekangan ini, seperti yang ditunjukkan dalam coretan kod contoh. Walau bagaimanapun, hanya meninggalkan pernyataan selepas syarat if (seperti yang ditunjukkan oleh #Do nothing?) tidak akan menghalang operasi daripada berlaku.

Isyarat Kata Kunci Penyelamat

Sintaks MySQL SIGNAL menyediakan penyelesaiannya. Ia membolehkan seseorang menimbulkan ralat tersuai dan memberikan mesej ralat yang bermakna. Berikut ialah versi pencetus yang dipertingkatkan:

create trigger agency_check
before insert on foo
for each row
begin
  if (new.agency < 1 or new.agency >5) then
    SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Agency must be between 1 and 5';
  end if 
end
Salin selepas log masuk

Pencetus ini kini akan menimbulkan ralat dengan mesej yang ditentukan jika percubaan dibuat untuk memasukkan atau mengemas kini baris dengan nilai agensi yang tidak sah. Ralat akan dipintas oleh klien MySQL dan dipaparkan kepada pengguna.

Kesimpulan

Dengan menggunakan kata kunci SIGNAL dalam pencetus, kami berjaya mengatasi kekurangan semakan MySQL dengan berkesan penguatkuasaan kekangan dan menyediakan mekanisme untuk menghalang manipulasi data yang tidak dibenarkan. Pendekatan ini memastikan integriti data dan menghalang data tidak sah daripada ditambah atau diubah suai dalam jadual foo.

Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menguatkuasakan Integriti Data dalam MySQL Apabila Kekangan Semakan Tidak Tersedia?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan