首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MYSQL中同一插入查询中的另一列中使用自动增量Id?

如何在MYSQL中同一插入查询中的另一列中使用自动增量Id?
EN

Stack Overflow用户
提问于 2018-11-14 11:22:53
回答 3查看 2.4K关注 0票数 0

如何在MYSQL中插入查询的另一列中使用自动增量Id?

我想用代码添加用户。就像如果插入后的user_id1,代码将是US1,同样,如果插入后的user_id954,则代码将为US954

这就是我目前正在做的

代码语言:javascript
复制
"INSERT INTO `users` (`user_id`, `user`, `code`) VALUES (NULL, 'Alice', NULL);"

然后检索PHP中的最后一个插入id (Codeigniter)

代码语言:javascript
复制
$insert_id = $this->db->insert_id();

然后用自动增量id更新代码。

代码语言:javascript
复制
"UPDATE `users` SET `code` = CONCAT('US', '" . $insert_id . "') WHERE `user_id` = " . $insert_id . ";";

无论如何,您可以在MYSQL中的单个INSERT查询中执行吗?

编辑:--这与这个Insert/ update at the same time in a MySql table?不一样。因为这个问题同时询问两个用户的并发操作,这不是我的问题。

EN

回答 3

Stack Overflow用户

发布于 2018-11-14 11:36:07

是的,有可能。您可以使用MySQL中的存储过程(SP)来完成它。您必须为每次注册调用SP一次,而不是两次查询(这是您所做的)。

这样可以节省很多执行时间。

代码语言:javascript
复制
    https://stackoverflow.com/questions/14957788/insert-and-update-with-stored-procedure    
    https://www.w3resource.com/mysql/mysql-procedure.php
    https://www.sitepoint.com/stored-procedures-mysql-php/
    http://php.net/manual/en/mysqli.quickstart.stored-procedures.php

请使用上述链接获得更多信息。

我建议使用SP登录/注册。它将为您的PHP web应用程序提供额外的能量。

作为你的基本例子。我和你分享过类似的SP代码。

代码语言:javascript
复制
BEGIN
declare autoIncr int;
//insert code
autoIncr = LAST_INSERT_ID(); 
//update code
END
票数 3
EN

Stack Overflow用户

发布于 2018-11-14 13:07:18

使用MAX( user_id )+1获得新的user_id,然后将其与字符串连接

代码语言:javascript
复制
INSERT INTO `users` (`user`, `code`) SELECT 'Alice',CONCAT("US",MAX(user_id)+1) from users
票数 0
EN

Stack Overflow用户

发布于 2018-11-14 11:32:41

当您创建您的表和列时,如果您给出了user_id自动增量的值的话。之后,当您想要插入数据时,不需要给出user_id的值,因为它将自动递增

对于“创建新创建新表”查询,请执行以下操作:

代码语言:javascript
复制
CREATE TABLE `users` (
    ID int NOT NULL AUTO_INCREMENT,
    user_id varchar(255) NOT NULL AUTO_INCREMENT,
    user varchar(255),
    code text,
    PRIMARY KEY (ID)
);

即插入查询。

代码语言:javascript
复制
"INSERT INTO `users` (`user`, `code`) VALUES ('Alice', NULL);"
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53299069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档