在插入时将自动增量值复制到另一列?
Posted
技术标签:
【中文标题】在插入时将自动增量值复制到另一列?【英文标题】:Copy autoincrement value to another column on insert? 【发布时间】:2012-11-13 20:17:25 【问题描述】:基本上我有一个版本产品的表格,
所以它有两列感兴趣,id | product_id
id
是 autoincrement
列,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 创建触发器函数以在允许插入之前将值从一列复制到另一列
在 MySQL 中,如何在 INSERT 时使用另一列中的自动增量值?