Die Antwort von @Xint0 ist korrekt. Sie haben die Genauigkeit und den Skalenwert auf die gleiche Anzahl von Stellen gesetzt, sodass Sie nur Werte kleiner als 1,0 einfügen können.
Das andere, was passiert, ist das Standardverhalten von MySQL, Werte abzuschneiden, wenn sie nicht in den Datentyp für die Spalte passen.
mysql> CREATE TABLE foo (dec DECIMAL(10,10));
mysql> INSERT INTO foo VALUES (1.0);
Query OK, 1 row affected, 1 warning (0.00 sec)
Beachten Sie, dass dies eine Warnung generiert.
mysql> SHOW WARNINGS;
+---------+------+----------------------------------------------+
| Level | Code | Message |
+---------+------+----------------------------------------------+
| Warning | 1264 | Wert außerhalb des zulässigen Bereichs für die Spalte 'dec' in Zeile 1 |
+---------+------+----------------------------------------------+
mysql> SELECT * FROM foo;
+--------------+
| dec |
+--------------+
| 0.9999999999 |
+--------------+
Sie können die Warnung in einen Fehler umwandeln, indem Sie den strengen SQL-Modus aktivieren:
mysql> SET SQL_MODE = STRICT_ALL_TABLES;
mysql> INSERT INTO foo VALUES (1.0);
ERROR 1264 (22003): Wert außerhalb des zulässigen Bereichs für die Spalte 'dec' in Zeile 1