我有一个表,其中包含一个float列(NULL -> Yes,默认值为NULL),用于表示:
CREATE TABLE `test` (
`test` float DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
字符串
在Mysql 5上-> INSERT INTO test VALUES ('')
是可以的。
On MariaDB 10 -> INSERT INTO test VALUES ('')
gives me #1366 - Incorrect double value:'' for column nico
. test
. test
at row 1
我想在插入之前做一个触发器来检测NaN值,并将其替换为NULL或0。
我测试过
DELIMITER //
CREATE TRIGGER test_vide BEFORE INSERT ON test
FOR EACH ROW
BEGIN
IF NEW.test='' THEN
SET NEW.test=NULL;
END IF;
END; //
DELIMITER ;
型
和
DELIMITER //
CREATE TRIGGER test_vide BEFORE INSERT ON test
FOR EACH ROW
BEGIN
IF NEW.test='' THEN
SET NEW.test='0';
END IF;
END; //
DELIMITER ;
型
但是它不起作用,我总是在MariaDB 10中插入错误。
有什么建议吗?
先谢了。
2条答案
按热度按时间w8rqjzmb1#
一种解决方案是禁用mariaDB严格模式(语法取决于您的操作系统)
我让
字符串
在/etc/mysql/mariadb.conf.d/50-server.cnf我的debian 12服务器上。可以插入使用
型
但这并没有回答在这种情况下如何使用触发器的问题
谢谢...
pobjuy322#
虽然删除所有sql_mode可以允许插入发生,但只有STRICT_TRANS_TABLE SQL_MODE需要删除以恢复以前的行为:
字符串