Rumah >pangkalan data >tutorial mysql >Berikut adalah beberapa tajuk, menggabungkan soalan dan memberi tumpuan kepada masalah teras: * Bagaimana untuk Memasukkan Julat Tarikh ke dalam MySQL Tanpa Pertindihan? * Sisipan Julat Tarikh MySQL: Mengelakkan Pertindihan - Penyelesaian a

Berikut adalah beberapa tajuk, menggabungkan soalan dan memberi tumpuan kepada masalah teras: * Bagaimana untuk Memasukkan Julat Tarikh ke dalam MySQL Tanpa Pertindihan? * Sisipan Julat Tarikh MySQL: Mengelakkan Pertindihan - Penyelesaian a

Susan Sarandon
Susan Sarandonasal
2024-10-27 10:58:30726semak imbas

Here are a few titles, incorporating questions and focusing on the core problem:

* How to Insert Date Ranges into MySQL Without Overlaps?
* MySQL Date Range Insertion: Avoiding Overlaps - Solutions and Challenges
* Can You Insert Non-Overlapping Date Ran

MySQL: Masukkan Julat Tarikh ke dalam Lajur Tarikh jika Tarikh Tidak Bertindih

Masalah:

Diberikan jadual dengan ketersediaan julat tarikh (avail), tugasnya adalah untuk memasukkan julat tarikh baharu ke dalam jadual hanya jika ia tidak bertindih dengan mana-mana julat tarikh sedia ada untuk ID akaun (acc_id) yang diberikan.

Cadangan Penyelesaian Menggunakan Penyata Sisipan Tunggal:

Walaupun mungkin menarik untuk mencapai ini dalam satu penyata sisipan, malangnya, ia tidak boleh dilakukan secara langsung dalam MySQL sahaja.

Alternatif Pendekatan:

  1. Kekangan SQL CHECK (Tidak Disokong dalam MySQL):

    SQL CHECK kekangan adalah kaedah pilihan untuk menguatkuasakan pertindihan sedemikian pengesahan. Walau bagaimanapun, MySQL tidak menyokong kekangan CHECK.

  2. Kekangan CHECK PostgreSQL:

    PostgreSQL menyokong kekangan CHECK pada jadual. Jika bertukar kepada PostgreSQL ialah pilihan yang berdaya maju, pendekatan ini boleh dipertimbangkan.

  3. Pencetus MySQL:

    Pencetus MySQL boleh digunakan untuk menyemak bertindih sebelum operasi memasukkan atau mengemas kini. Walau bagaimanapun, ini memerlukan versi MySQL yang terkini.

  4. Logik Aplikasi:

    Lazimnya, pengesahan bertindih dilakukan dalam logik aplikasi. Penyata SELECT COUNT(id) ... boleh digunakan untuk menyemak baris yang melanggar entri baharu. Jika kiraan lebih besar daripada 0, sisipan atau kemas kini akan digugurkan.

  5. Pertimbangan Tambahan:

    • Pengesahan hendaklah menyemak sama ada sebarang jenis pertindihan, termasuk pertindihan jumlah atau separa.
    • Pengesahan harus mempertimbangkan semua julat sedia ada dengan acc_id yang sama.

Kesimpulan:

Walaupun satu penyata sisipan mungkin tidak boleh dilaksanakan dalam MySQL, pendekatan alternatif seperti kekangan PostgreSQL CHECK, pencetus MySQL atau logik aplikasi boleh memberikan pengesahan pertindihan yang boleh dipercayai.

Atas ialah kandungan terperinci Berikut adalah beberapa tajuk, menggabungkan soalan dan memberi tumpuan kepada masalah teras: * Bagaimana untuk Memasukkan Julat Tarikh ke dalam MySQL Tanpa Pertindihan? * Sisipan Julat Tarikh MySQL: Mengelakkan Pertindihan - Penyelesaian a. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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