Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie verhindert man Überschneidungen von Datumsbereichen in MySQL?

Linda Hamilton
Freigeben: 2024-10-27 10:09:30
Original
785 Leute haben es durchsucht

How to Prevent Date Range Overlaps in MySQL?

Umgang mit überlappenden Datumsbereichen in MySQL

Das Einfügen neuer Datumsbereiche in eine vorhandene Tabelle kann schwierig sein, insbesondere wenn versucht wird, Überschneidungen mit zu verhindern vorhandene Einträge. In diesem Zusammenhang möchten wir das Einfügen von Bereichen vermeiden, die sich mit denen in der Datenbank für eine bestimmte Kontokennung (acc_id) überschneiden.

Während MySQL die Option bietet, Datumsangaben mithilfe von SQL CHECK-Einschränkungen zu validieren, ist diese Funktion leider nicht verfügbar unterstützt von MySQL. PostgreSQL hingegen unterstützt CHECK-Einschränkungen, aber ein Wechsel der Datenbank-Engines ist möglicherweise nicht in allen Situationen möglich.

Alternativ können wir die Validierung in der Anwendungslogik implementieren. Ein Ansatz besteht darin, eine SELECT COUNT(id) ...-Anweisung zu verwenden, um vor dem Versuch eines INSERT auf Überlappungen zu prüfen:

SELECT COUNT(id)
FROM avail
WHERE acc_id = '175'
AND (start_date BETWEEN '2015-05-30' AND '2015-06-04')
OR (end_date BETWEEN '2015-05-30' AND '2015-06-04')
OR ('2015-05-30' BETWEEN start_date AND end_date)
OR ('2015-06-04' BETWEEN start_date AND end_date);
Nach dem Login kopieren

Wenn die zurückgegebene Anzahl größer als 0 ist, wird die Einfügung aufgrund einer Überlappung abgebrochen.

Eine andere Methode besteht darin, einen Trigger in MySQL zu verwenden. Ein Trigger kann so programmiert werden, dass er vor dem INSERT/UPDATE auf Überlappungen prüft und einen Fehler auslöst, wenn welche gefunden werden. Trigger erfordern jedoch eine aktuelle MySQL-Version.

Letztendlich hängt die Wahl des Ansatzes von den spezifischen Anforderungen Ihrer Anwendung und der Machbarkeit der Implementierung auf eine der unterstützten Arten ab.

Das obige ist der detaillierte Inhalt vonWie verhindert man Überschneidungen von Datumsbereichen in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!