sql >> Databáze >  >> RDS >> Mysql

mysql - VLOŽTE rozsah dat do sloupců dat, POKUD se data nepřekrývají s existujícími

S použitím pouze MySQL je to bohužel nemožné. Nebo alespoň prakticky. Preferovaným způsobem by bylo použití omezení SQL CHECK, která jsou ve standardu jazyka SQL. MySQL je však nepodporuje.

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

Zdá se, že PostgreSQL podporuje omezení CHECK na tabulkách, ale nejsem si jistý, jak schůdné je pro vás přepnout databázový stroj nebo jestli to stojí za námahu jen tuto funkci použít.

V MySQL lze k vyřešení tohoto problému použít spouštěč, který by před vložením/aktualizací zkontroloval překrývající se řádky a vyvolal chybu pomocí SIGNAL prohlášení. (Viz:https://dev.mysql.com/doc/ refman/5.7/en/signal.html ) Chcete-li však použít toto řešení, musíte použít aktuální verzi MySQL.

Kromě čistě SQL řešení se to obvykle provádí v aplikační logice, takže jakýkoli program, který přistupuje k databázi MySQL, obvykle kontroluje tento druh omezení tím, že požaduje každý řádek, který je narušen novým záznamem v SELECT COUNT(id) ... prohlášení. Pokud je vrácený počet větší než 0, jednoduše se nevloží/aktualizuje.




  1. Zprávy MySQL Workbench nejsou na této pozici platné pro tuto chybu verze serveru

  2. Zkombinujte dva sloupce v SQL pro klauzuli WHERE

  3. Odečtěte dny od data v PostgreSQL

  4. Připojení k SQL Server LocalDB pomocí JDBC