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; |