Rumah > pangkalan data > tutorial mysql > Bolehkah Pencetus Meniru CHECK Kekangan dengan Pengendalian Ralat dalam MySQL?

Bolehkah Pencetus Meniru CHECK Kekangan dengan Pengendalian Ralat dalam MySQL?

Susan Sarandon
Lepaskan: 2024-11-26 03:24:12
asal
787 orang telah melayarinya

Can Triggers Mimic CHECK Constraints with Error Handling in MySQL?

Menerokai Kebolehlaksanaan Emulasi Kekangan CHECK Berasaskan Pencetus dalam MySQL

MySQL tidak mempunyai sokongan terbina dalam untuk kekangan CHECK, memberikan cabaran untuk menguatkuasakan konsistensi data. Akibatnya, penyelesaian alternatif telah dicari, termasuk penggunaan pencetus. Walau bagaimanapun, pendekatan berasaskan pencetus biasa sering menggunakan menetapkan nilai lalai dan bukannya memberi isyarat ralat.

Bolehkah Pencetus Meniru Kekangan SEMAK dengan Pengendalian Ralat?

Timbul persoalan sama ada ia adalah mungkin untuk membina pencetus yang mengembalikan ralat apabila melanggar syarat tertentu, dengan berkesan mensimulasikan tingkah laku CHECK kekangan. Jawapannya sememangnya afirmatif.

Untuk kemas kini data, pencetus seperti berikut boleh digunakan:

delimiter $$
create trigger chk_stats1 before update on stats
for each row
begin
    if new.month > 12 then
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Cannot add or update row: only';
    end if;
end;
$$
Salin selepas log masuk

Pencetus ini beroperasi sebelum operasi kemas kini dan menyemak sama ada medan "bulan" melebihi 12. Jika ya, ia mencetuskan ralat dengan SQLSTATE dan mesej yang ditentukan.

Begitu juga, untuk data sisipan, pencetus seperti ini boleh digunakan:

delimiter $$
create trigger chk_stats before insert on stats
for each row
begin
if new.month > 12 then
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Cannot add or update row: only';
end if;
end;
$
Salin selepas log masuk

Pencetus ini bertindak sebagai penguatkuasa berkesan kekangan CHECK yang diingini, mengembalikan ralat sekiranya berlaku pelanggaran kekangan, sama seperti kekangan CHECK asli.

Atas ialah kandungan terperinci Bolehkah Pencetus Meniru CHECK Kekangan dengan Pengendalian Ralat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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