Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql - WSTAW zakres dat do kolumn dat JEŚLI daty nie pokrywają się z istniejącymi

Niestety, używając tylko MySQL jest to niemożliwe. A przynajmniej praktycznie. Preferowanym sposobem byłoby użycie ograniczeń SQL CHECK, które są w standardzie języka SQL. Jednak MySQL ich nie obsługuje.

Zobacz:https://dev.mysql.com/doc /refman/5.7/en/create-table.html

Wygląda na to, że PostgreSQL obsługuje ograniczenia CHECK na tabelach, ale nie jestem pewien, jak opłacalne jest przełączanie silnika bazy danych lub czy jest to w ogóle warte zachodu, aby użyć tej funkcji.

W MySQL do rozwiązania tego problemu można użyć wyzwalacza, który sprawdziłby nakładające się wiersze przed wstawieniem/aktualizacją i wyrzuciłby błąd za pomocą SIGNAL oświadczenie. (Patrz:https://dev.mysql.com/doc/ refman/5.7/pl/sygnał.html ) Jednak aby skorzystać z tego rozwiązania, musisz użyć aktualnej wersji MySQL.

Oprócz czystych rozwiązań SQL, zwykle odbywa się to w logice aplikacji, więc każdy program uzyskujący dostęp do bazy danych MySQL zazwyczaj sprawdza tego rodzaju ograniczenia, żądając każdego wiersza, który jest naruszony przez nowy wpis w SELECT COUNT(id) ... oświadczenie. Jeśli zwrócona liczba jest większa niż 0, po prostu nie ma to wpływu na wstawianie/aktualizację.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dostawca ADO.NET o niezmiennej nazwie „MySql.Data.MySqlClient” nie jest zarejestrowany w pliku konfiguracyjnym komputera lub aplikacji

  2. Jak przyciąć pierwsze trzy znaki na podstawie pierwszej litery (wyrażenia) przed wstawieniem do bazy danych

  3. #1366 — Nieprawidłowa wartość całkowita:MYsql

  4. SQLAlchemy i złączenia, nie mamy kluczy obcych

  5. Pobieranie danych o strukturze hierarchicznej w MySQL