获得新生成的AUTO_INCREMENT属性的值也有多种方法。推荐的方法是使用LAST_INSERT_ID()函数,即在INSERT之后马上使用:
SELECT LAST_INSERT_ID();
另外还可以用"WHERE auto_col IS NULL"条件选择出新插入的行,即在INSERT后马上用:
SELECT * FROM t WHERE a IS NULL;
选择出来的将是新插入的行,而非真正的满足"a IS NULL"条件的行。但你要是再执行一次上述查询,则返回的又变成了真正的满足"a IS NULL"条件的行,由于a是主键,因此肯定会返回空集。这看上去很诡异是吗,不过MySQL也不想这么干,但ODBC标准里曾有这种用法,为了支持ODBC,MySQL也是没办法啊。不过可以将SQL_AUTO_IS_NULL设为0来禁止这一用法。
分享到:
相关推荐
### MySQL AUTO_INCREMENT 主键详解 在数据库设计与应用中,主键是确保数据表每一行记录唯一性的关键机制之一。而`AUTO_INCREMENT`属性则是在MySQL数据库系统中为某些整数类型的主键自动分配唯一值的功能。下面我们...
MySQL 序列 AUTO_INCREMENT详解及实例代码 MySQL序列是一组整数:1, 2, 3, …,由于一张数据表只能有一个字段自增主键, 如果你想实现其他字段也实现自动增加,就可以使用MySQL序列来实现。 本章我们将介绍如何使用...
当插入新记录时,系统会基于当前的`auto_increment_offset`和`auto_increment_increment`值来生成ID。例如,如果`offset`是2,`increment`是10,那么第一条记录的ID将是2,第二条记录的ID将是12,依此类推。 4. **...
在MySQL数据库中,`auto_increment` 是一个非常重要的特性,它允许系统自动为新插入的行生成唯一的标识符,通常用于主键字段。这个特性在处理大量数据时尤其有用,因为它消除了手动分配唯一ID的需求。本文将详细介绍...
MySQL中的auto_increment是一种非常实用的属性,用于为表中的记录自动生成唯一的ID。这通常用于主键字段,确保每条记录都可以通过一个唯一的标识符进行区分。然而,auto_increment在处理记录删除、数据库重启以及...
这是因为MySQL默认的行为是保留`auto_increment`的序列,以避免重复的ID值。但有时我们需要让它从1重新开始,这可以通过两种方法来实现。 **方法一:使用`DELETE`语句和`ALTER TABLE`语句** 首先,你可以通过`...
在数据库管理中,自动递增(Auto Increment)是一个非常重要的概念,尤其在关系型数据库如MySQL、PostgreSQL、SQLite等中广泛使用。 在MySQL中,`AUTO_INCREMENT`关键字用于定义整数列,当插入新行时,如果未指定该...
总的来说,解决MySQL双向同步中的键值冲突问题,关键在于利用`auto_increment_offset`和`auto_increment_increment`参数,合理规划每个服务器的自增长ID序列,以确保数据的一致性和完整性。同时,为了保证整个系统的...
在之前得文章中我们说过,如果使用delete对数据库中得表进行删除,那么只是把记录删除掉,并且id的值...create table t4(id int auto_increment primary key, num int) engine=innodb default charset=utf8; 那么接下
像MySQL一样,将Mongoid id字段更改为Integer的宝石。 MongoDB文档中的想法: 注意! 这个宝石已经帮助超过了4年,并产生了超过一百万行,这是非常...gem 'mongoid_auto_increment_id' , "0.6.1" # Mongoid 3.1.x gem
MySQL的InnoDB存储引擎在处理带有`auto_increment`列的表时,会受到`innodb_autoinc_lock_mode`参数的影响。这个参数决定了插入数据时如何管理自动递增锁,从而在性能和数据安全性(主从数据一致性)之间取得平衡。 ...
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '关联city表的province_id', `country_id` int(11) NOT NULL DEFAULT 0 COMMENT '国家id', `province_name` varchar(100) NOT NULL DEFAULT '' COMMENT '省份名称', ...
* auto_increment_increment * auto_increment_offset * big_tables * bulk_insert_buffer_size * default_tmp_storage_engine * div_precision_increment * end_markers_in_json * eq_range_index_dive_limit * ...
### MySQL中的Identity(Auto-Increment)属性 在MySQL数据库中,`identity`通常与`auto_increment`属性关联在一起。此属性主要用于确保表中的主键字段能够自动递增,从而为每一行数据提供一个唯一标识符。这对于...
在上述例子中,通过`ALTER TABLE`语句将`id`字段改为自动增加,MySQL自动地从当前表中最大`id`值的下一个数字开始自增,因此在插入新记录`'test6'`时,`id`字段被设置为101,符合预期。 问题延伸部分提出了两个额外...
const char* create_table_sql = "CREATE TABLE IF NOT EXISTS students (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), age INT)"; if (mysql_query(conn, create_table_sql)) { fprintf(stderr, "%s\n",...
ALTER TABLE table_name MODIFY id INT AUTO_INCREMENT; ``` 或者,如果你想在表中新增一个自增主键列,可以这样做: ```sql ALTER TABLE table_name ADD COLUMN id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY; ...