Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql - ВМЕСЕТЕ диапазон от време в колони за дати, АКО датите не се припокриват със съществуващите

За съжаление, използването само на MySQL това е невъзможно. Или поне на практика. Предпочитаният начин би бил използването на ограничения на SQL CHECK, те са в стандарта на SQL език. MySQL обаче не ги поддържа.

Вижте:https://dev.mysql.com/doc /refman/5.7/en/create-table.html

Изглежда, че PostgreSQL поддържа CHECK ограничения за таблици, но не съм сигурен доколко е жизнеспособно да превключите машината на базата данни или дали това дори си струва труда само да използвате тази функция.

В MySQL може да се използва тригер за решаване на този проблем, който ще провери за припокриващи се редове преди да се случи вмъкването/актуализацията и ще изведе грешка с помощта на SIGNAL изявление. (Вижте:https://dev.mysql.com/doc/ refman/5.7/en/signal.html ) Въпреки това, за да използвате това решение, ще трябва да използвате актуална версия на MySQL.

Освен чистите SQL решения, това обикновено се прави в логиката на приложението, така че която и програма да осъществява достъп до базата данни MySQL обикновено проверява за този вид ограничения, като изисква всеки ред, който е нарушен от новия запис в SELECT COUNT(id) ... изявление. Ако върнатият брой е по-голям от 0, това просто не се отразява на вмъкването/актуализацията.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. връзка на MATLAB 7.0 и MYSQL

  2. Има ли ограничение за дължината на заявката в mysql?

  3. Как бързо да ИЗБЕРЕТЕ 3 произволни записа от 30k MySQL таблица с филтър where по една заявка?

  4. Съставяне на стека - Опростете внедряването на Docker на MySQL контейнери

  5. Вмъкване в таблица, която има тире в името