Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

mysql - INSERIR intervalo de datas nas colunas de data SE as datas não se sobrepuserem às existentes


Infelizmente, usando apenas o MySQL isso é impossível. Ou pelo menos, praticamente. A maneira preferida seria usar as restrições SQL CHECK, que estão no padrão da linguagem SQL. No entanto, o MySQL não os suporta.

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

Parece que o PostgreSQL suporta restrições CHECK em tabelas, mas não tenho certeza de quão viável é para você mudar de mecanismo de banco de dados ou se vale a pena usar esse recurso.

No MySQL, um gatilho pode ser usado para resolver esse problema, o que verificaria a sobreposição de linhas antes que a inserção/atualização ocorresse e geraria um erro usando o SIGNAL demonstração. (Veja:https://dev.mysql.com/doc/ refman/5.7/en/signal.html ) No entanto, para usar esta solução, você teria que usar uma versão atualizada do MySQL.

Além das soluções SQL puras, isso normalmente é feito na lógica do aplicativo, portanto, qualquer programa que esteja acessando o banco de dados MySQL normalmente verifica esse tipo de restrição solicitando cada linha violada pela nova entrada em um SELECT COUNT(id) ... demonstração. Se a contagem retornada for maior que 0, isso simplesmente não ocorre na inserção/atualização.