是否可以插入一行并在同一查询中插入值?
就像是…
INSERT INTO `items` (`item`, `number`, `state`)
(SELECT '3', `number`, `state` FROM `item_bug` WHERE `id`='3')
然后,获取ID并执行
SELECT * FROM `items` WHERE `id`='$id'
但是只使用一个查询。
您可以调用存储过程,该过程将执行插入操作,并在一次调用中将结果集从应用程序层返回到mysql:
存储过程调用
mysql> call insert_user('bar');
+---------+----------+
| user_id | username |
+---------+----------+
| 1 | bar |
+---------+----------+
1 row in set (0.02 sec)
$sqlCmd = sprintf("call insert_user('%s')", ...);
简单的例子:
drop table if exists users;
create table users
(
user_id int unsigned not null auto_increment primary key,
username varchar(32) unique not null
)
engine=innodb;
drop procedure if exists insert_user;
delimiter #
create procedure insert_user
(
in p_username varchar(32)
)
begin
declare v_user_id int unsigned default 0;
insert into users (username) values (p_username);
set v_user_id = last_insert_id();
-- do more stuff with v_user_id e.g. logs etc...
select * from users where user_id = v_user_id;
end#
delimiter ;
call insert_user('bar');
问题内容: 当我插入一行时,表格的“ id”字段会自动增加。我想插入一行,然后获取该ID。 我会按照我说的去做,但是有没有办法我不用担心插入行和获取ID之间的时间呢? 我知道我可以在数据库中查询与输入的信息相匹配的行,但是变化很大,将有重复项,唯一的区别是id。 问题答案: 请参阅。 无论您做什么,都不要插入“ ”。就像您说的那样,这是比赛条件,没有必要。已经具有此功能。
问题内容: 我正在掌握PDO的基础知识。 但是我试图获取插入的行的ID,我使用: 我遇到的教程都是关于交易的,但是我没有使用交易! 问题答案: 您可能正在寻找lastInsertId。“返回最后插入的行或序列值的ID”。
问题内容: 我使用此命令在两列表中插入一些单词: 如何获取每个单词插入行的ID(主键)。我的意思是执行后返回“ 55,56,57”之类的值。MySQL有这样的反应吗? 术语列是。如果一个术语已经存在,MySQL将不会插入它。是否可以返回该重复项的引用(即该术语所在行的ID)?像“55,A响应 12 ,56”。 问题答案: 您可以通过调用框架或MySQL库(使用任何语言)来获取它。 那行不通。插入后
问题内容: 我正在使用Python 在mysql中运行查询 运行查询后,我想知道该行的主键。我知道有查询 但是我不确定它是否可以与插入忽略一起使用 做这个的最好方式是什么? 问题答案: 文档的说: 如果使用INSERT IGNORE并且忽略该行,则AUTO_INCREMENT计数器不会增加,并且LAST_INSERT_ID()返回0,这表明没有插入行。 知道了这一点,您可以将其分为多个步骤: 插入
问题内容: 我想编写一个函数,为插入的行返回一列的值(在这种情况下为自动递增的主键)。 本质上,我想插入一些新数据,生成一个新的主键,然后获取该键。我可以简单地在表中查找最高的主键,但是有可能其他人也可以运行该函数,并且我可以返回错误的键,对吗? 解决这个问题的最简单方法是什么? 问题答案: 正如评论中指出的那样,来自MySQL文档: 该函数不受竞争条件的影响,因为它在特定于您的连接的MySQL中
这是我的密码: 如您所知,它会在数据库中插入一个新行。现在我需要获取插入行的。我怎么能得到这个? 注意,我知道,如果我使用