将FLOAT值插入MySQL中的INT列时如何获得警告?

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期间丢失数据时,我更喜欢警告.

Ran*_*eed 8

您可以使用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)

我知道这只是一种解决方法,肯定会对性能产生负面影响(尽管可能很小).但这是我能够提出的唯一接近的解决方案.