MySQL参数-sql_auto_is_null
sql_auto_is_null
属性 值 系统变量 sql_auto_is_null范围 全球会议 动态 是 SET_VAR提示适用是 类型 布尔型 默认值 OFF如果启用了此变量,则在成功插入自动生成的
AUTO_INCREMENT值的语句之后 ,可以通过发出以下形式的语句来找到该值:SELECT * FROM tbl_name WHERE auto_col IS NULL
如果该语句返回一行,则返回的值与调用该
LAST_INSERT_ID()函数的值相同。
有关详细信息,包括在多行插入之后的返回值,请参见第12.15节“信息函数”。如果没有AUTO_INCREMENT成功插入任何
值,则该SELECT语句不返回任何行。某些ODBC程序(例如Access)使用通过比较来 检索
AUTO_INCREMENT值
的行为IS NULL。请参阅 获取自动增量值。可以通过设置sql_auto_is_null为 禁用此行为OFF。在此之前的MySQL 8.0.16,改造,以 执行该语句时,才被执行,这样的值
执行期间确定查询是否转化。在MySQL 8.0.16及更高版本中,转换是在语句准备期间执行的。WHERE *auto_col* IS NULL``WHERE *auto_col* = LAST_INSERT_ID()``sql_auto_is_null默认值
sql_auto_is_null是OFF。
实践
- 查看当前参数值
select @@sql_auto_is_null; - 设置参数为开启
set @@sql_auto_is_null=1;
2.1 创建带自增长主键的表test1create table test1 (id int primary key auto_increment, name varchar(255));
2.2 插入数据insert into test1 set name='booboo';
2.3 查看id不为null的列SELECT * FROM fms.test1 WHERE id IS NULL; - 设置参数为关闭
set @@sql_auto_is_null=0;
3.1 插入数据insert into test1 set name='tom';
3.2 查看id不为null的列SELECT * FROM fms.test1 WHERE id IS NULL;
总结sql_auto_is_null 参数默认值为OFF 关闭 0
某些ODBC程序(例如Access)使用通过比较来 检索AUTO_INCREMENT值 的行为 [IS NULL]
在参数值为ON的情况下,可执行select * from table where id is null;
不建议开启。
mysql>select @@sql_auto_is_null; |