Bagaimana untuk Menguatkuasakan Had Baris Keras dalam Jadual MySQL?

Linda Hamilton
Lepaskan: 2024-11-10 02:16:03
asal
624 orang telah melayarinya

How to Enforce a Hard Row Limit in MySQL Tables?

Melaksanakan Had Baris Keras dalam Jadual MySQL

Soalan: Pereka sering menghadapi keperluan untuk menguatkuasakan had maksimum pada baris yang disimpan dalam jadual MySQL . Adakah terdapat kaedah muktamad untuk mencapai sekatan ini selain daripada sekadar menyatakan pembayang?

Jawapan: Menetapkan had baris maksimum ialah cabaran pangkalan data biasa. Walaupun sifat MAX_ROWS bertindak sebagai cadangan dan bukannya had mutlak, sememangnya terdapat cara untuk mengenakan had keras pada jadual MySQL:

Mekanisme Berasaskan Pencetus:

  • Buat pencetus SEBELUM INSERT.
  • Kira bilangan baris sedia ada dalam jadual.
  • Jika kiraan melebihi had yang ditetapkan (cth., 25), timbulkan ralat untuk menghalang sisipan.
DELIMITER $$

CREATE TRIGGER trigger1
BEFORE INSERT
ON table1
FOR EACH ROW
BEGIN
  SELECT COUNT(*) INTO @cnt FROM table1;
  IF @cnt >= 25 THEN
    CALL sth(); -- raise an error
  END IF;
END
$$

DELIMITER ;
Salin selepas log masuk

Nota: COUNT operasi boleh melambatkan pada jadual InnoDb yang besar.

MySQL 5.5 Pernyataan Isyarat/Letak Jawatan:

  • Timbulkan ralat menggunakan pernyataan SIGNAL atau RESIGNAL. Pilihan ini tersedia dalam MySQL 5.5 dan seterusnya.

Kaedah Skrip Cron:

  • Kosongkan jadual secara berkala menggunakan skrip cron. Ini adalah penyelesaian yang lebih mudah tetapi kurang automatik.

Pertimbangan Tambahan:

  • Pertimbangkan kesan prestasi operasi COUNT dalam pendekatan berasaskan pencetus .
  • Pastikan pengendalian ralat yang betul dan log masuk semua kaedah untuk mengelakkan kehilangan data atau tidak konsisten.

Atas ialah kandungan terperinci Bagaimana untuk Menguatkuasakan Had Baris Keras dalam Jadual 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