如何在MYSQL中插入查询的另一列中使用自动增量Id?
我想用代码添加用户。就像如果插入后的user_id是1,代码将是US1,同样,如果插入后的user_id是954,则代码将为US954
这就是我目前正在做的
"INSERT INTO `users` (`user_id`, `user`, `code`) VALUES (NULL, 'Alice', NULL);"然后检索PHP中的最后一个插入id (Codeigniter)
$insert_id = $this->db->insert_id();然后用自动增量id更新代码。
"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?不一样。因为这个问题同时询问两个用户的并发操作,这不是我的问题。
发布于 2018-11-14 11:36:07
是的,有可能。您可以使用MySQL中的存储过程(SP)来完成它。您必须为每次注册调用SP一次,而不是两次查询(这是您所做的)。
这样可以节省很多执行时间。
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代码。
BEGIN
declare autoIncr int;
//insert code
autoIncr = LAST_INSERT_ID();
//update code
END发布于 2018-11-14 13:07:18
使用MAX( user_id )+1获得新的user_id,然后将其与字符串连接
INSERT INTO `users` (`user`, `code`) SELECT 'Alice',CONCAT("US",MAX(user_id)+1) from users发布于 2018-11-14 11:32:41
当您创建您的表和列时,如果您给出了user_id自动增量的值的话。之后,当您想要插入数据时,不需要给出user_id的值,因为它将自动递增
对于“创建新创建新表”查询,请执行以下操作:
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)
);即插入查询。
"INSERT INTO `users` (`user`, `code`) VALUES ('Alice', NULL);"https://stackoverflow.com/questions/53299069
复制相似问题