在插入时将自动增量值复制到另一列?

Posted

技术标签:

【中文标题】在插入时将自动增量值复制到另一列?【英文标题】:Copy autoincrement value to another column on insert? 【发布时间】:2012-11-13 20:17:25 【问题描述】:

基本上我有一个版本产品的表格,

所以它有两列感兴趣,id | product_id

idautoincrement 列,product_id 只是 int

第一次创建产品时,product_id 来自 id, 编辑产品时,我们复制了该行,因此product_id 相同,但 id 不同。所以当我们第一次创建产品时,我们会做两个查询,

插入,然后update table whatever set product_id = id where id = the insert id

这可行,但我想知道是否有办法在一个查询中做到这一点?

请注意,我们只能访问插入、更新、删除。没有触发器或存储过程。

【问题讨论】:

【参考方案1】:

使用LAST_INSERT_ID()函数:

update table whatever set
product_id = id
where id = last_insert_id()

【讨论】:

这基本上就是我们正在做的事情,但我想知道是否有办法在插入过程中链接这两个值? 您可以查询目录表以查找下一个增量值。我忘记是哪一个了 这不是问题的答案【参考方案2】:

这是单个查询:

insert into whatever 
set product_id = last_insert_id() + 1;

【讨论】:

如果您有多个要插入行的表,则无法保证这会起作用。

以上是关于在插入时将自动增量值复制到另一列?的主要内容,如果未能解决你的问题,请参考以下文章

Postgres 创建触发器函数以在允许插入之前将值从一列复制到另一列

插入时将PK添加到另一列

在 MySQL 中,如何在 INSERT 时使用另一列中的自动增量值?

如何获取表中的最后一个自动增量值? VB.NET

如何把Excel中选定的一列数据复制粘贴到另一列相同的列中,要用宏来自动复制粘贴。

在同一个表中将值从一列复制到另一列