R_U*_*ser 9 mysql warnings insert
我已经处理了一个包含INT类型列的表:
CREATE TEMPORARY TABLE `myTab` (`int` INT, `text` TEXT, `float` FLOAT);
Run Code Online (Sandbox Code Playgroud)
现在我尝试在INT列中添加一个浮点值
INSERT INTO `myTab` (`int`) VALUES (13.34);
Run Code Online (Sandbox Code Playgroud)
我没有收到警告:
SHOW WARNINGS;
Run Code Online (Sandbox Code Playgroud)
虽然该列之后仅包含13个:
SELECT * FROM `myTab`;
Run Code Online (Sandbox Code Playgroud)
当浮点值添加到整数列时,是否可能以某种方式获得警告?我正在使用mysql Ver 14.14 Distrib 5.5.31, for debian-linux-gnu (i686) using readline 6.2
添加:我想避免为每个INT列添加"检查点"(如何检查MySQL中的值是否为整数?).在转换为INT期间丢失数据时,我更喜欢警告.
您可以使用DECIMAL(n, 0)类型而不是INT.尝试在此类列中插入非整数会引发警告.
CREATE TEMPORARY TABLE t (id DECIMAL); -- equivalent to the default DECIMAL(10, 0), which covers the range of INT
INSERT INTO t VALUES (0.9); -- raises warning "1265 - Data truncated for column 'id' at row 1"
SELECT * FROM t; -- 0.9 was rounded to 1
Run Code Online (Sandbox Code Playgroud)
我知道这只是一种解决方法,肯定会对性能产生负面影响(尽管可能很小).但这是我能够提出的唯一接近的解决方案.
| 归档时间: |
|
| 查看次数: |
1814 次 |
| 最近记录: |