MySQL存储过程中的sql

it2022-05-05  130

在my.cnf中设置了sql_mode='STRICT_TRANS_TABLES';

却发现还是有非法数据的写入,比如无符号整数字段本来值是0,还可以减,结果当然溢出了,经检查发现存储过程中默认的sql_mode并没有使用global的sql_mode,测试如下:

CREATE PROCEDURE p_test()BEGINselect @@session.sql_mode,@@global.sql_mode;END;

call p_test();

+--------------------+---------------------+| @@session.sql_mode | @@global.sql_mode |+--------------------+---------------------+| | STRICT_TRANS_TABLES |+--------------------+---------------------+1 row in set (0.00 sec)

CREATE PROCEDURE p_test1()BEGINset sql_mode=@@global.sql_mode;

select @@session.sql_mode,@@global.sql_mode;END;

call p_test1();

+---------------------+---------------------+| @@session.sql_mode | @@global.sql_mode |+---------------------+---------------------+| STRICT_TRANS_TABLES | STRICT_TRANS_TABLES |+---------------------+---------------------+1 row in set (0.00 sec)

转载于:https://www.cnblogs.com/seawwh/archive/2011/10/31/2229876.html


最新回复(0)