在mysql中,如何将自动递增字段中的数据放入另一列?

时间:2013-05-08 06:40:50

标签: mysql sql

例如我有2个特定的列:id和threadId,在某些情况下,我希望threadId等于id(如果它是原始线程),我不确定我会怎么做,因为id是autoIncremented。

3 个答案:

答案 0 :(得分:1)

你应该可以使用触发器来做到这一点。

使用此信息中的信息来帮助您:
Can you access the auto increment value in MySQL within one statement?

在插入之前获取下一个ID表单auto_increment并将其设置在新字段中。

然而,这会带来一个问题 - 你说它应该只在“某些情况下”发生。这意味着触发器对你没有好处,因为它每次都会执行(除非你在表中有一些额外的逻辑,以允许检查是否应该在触发器中使用IF语句设置新字段)。在这种情况下,您唯一的选择是插入行,获取其新创建的ID,并在必要时更新它,将另一列设置为此值。

答案 1 :(得分:1)

Greg提到了两个选项  第一个是在表上创建一个触发器,在该特定表上插入后,将字段ID更新为与threadID相同:

update schema.tablename set threadID = ID;

另一个选项是执行sql本身并更新表。

答案 2 :(得分:1)

使用此查询INSERT INTO table(id,threadId)VALUES(NULL,(SELECT LAST_INSERT_ID()+ 1));

Shamseer PC