mysql如何获取自增主键_MySql如何手动获取自增主键
时间: 2023-08-18 14:08:47 浏览: 66
在MySQL中,可以使用LAST_INSERT_ID()函数手动获取自增主键。当插入一条记录时,LAST_INSERT_ID()函数可以返回自动递增列的值。
例如,如果需要获取一个名为"users"的表中最新插入记录的自增主键,可以使用以下SQL语句:
```
INSERT INTO users (name, age) VALUES ('John Doe', 30);
SELECT LAST_INSERT_ID();
```
这将在"users"表中插入一条记录,然后返回自增主键的值。如果需要在插入记录时立即获取自增主键的值,可以使用以下语句:
```
INSERT INTO users (name, age) VALUES ('John Doe', 30)
ON DUPLICATE KEY UPDATE id=LAST_INSERT_ID(id), age=30;
SELECT LAST_INSERT_ID();
```
这将在"users"表中插入一条记录,如果记录已经存在则更新记录。然后返回自增主键的值。
相关问题
mysql不用自增主键
当使用MySQL时,不使用自增主键是完全可以的。你可以在建表SQL语句中去掉AUTO_INCREMENT关键字,比如:
CREATE TABLE `user` (
`id` int NOT NULL COMMENT '主键',
`name` char(10) NOT NULL DEFAULT '' COMMENT '名字',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
这样创建的表会成功建立,但是MySQL内部会偷偷地为你添加一个名为ROW_ID的隐藏列作为主键。所以你仍然可以插入数据,并且需要自己设置主键的值。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [数据库主键一定要自增吗?有哪些场景不建议自增?](https://blog.csdn.net/CRMEB/article/details/125393423)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
mybatis 获取自增主键
MyBatis获取自增主键的方式有多种,这里介绍两种常用的方式。
第一种是在插入操作时,使用selectKey标签来获取自增主键。这个标签需要指定keyProperty属性,表示将获取的主键值赋值给哪个实体对象的属性中。在实际使用时,可以使用如下配置:
```
<insert id="insertUser" parameterType="com.example.User">
INSERT INTO users(name,age,email)
VALUES(#{name},#{age},#{email})
<selectKey keyProperty="id" order="AFTER" resultType="int">
SELECT LAST_INSERT_ID()
</selectKey>
</insert>
```
第二种方式是使用useGeneratedKeys标签来获取自增主键。这种方式需要在插入操作时设置useGeneratedKeys属性为true,并且指定keyColumn属性,表示将生成的主键值赋值给数据库表中的哪个列。在实际使用时,可以使用如下配置:
```
<insert id="insertUser" parameterType="com.example.User" useGeneratedKeys="true" keyColumn="id">
INSERT INTO users(name,age,email)
VALUES(#{name},#{age},#{email})
</insert>
```
需要注意的是,使用useGeneratedKeys方式获取自增主键时,需要确保数据库驱动支持JDBC 3.0以上的规范,否则可能会抛出异常。同时,在MySQL数据库中,使用useGeneratedKeys方式获取主键值可能会存在问题,可以优先使用selectKey标签的方式获取自增主键值。