2012-03-24 50 views
0

当将行插入带有自动增量主键列的表中时,是否有办法获取要分配给该行的值?可以通过自动增量pk获取插入的值吗?

为了清楚起见,我想将此值用作同一行上不同列的字符串的一部分。

做MAX(id)+ 1似乎不够健壮。 然后执行插入操作,然后使用LAST_INSERT_ID()进行更新是不好的,因为这是2个独立的数据库调用。

感谢

编辑

是什么大家都觉得这样的:

INSERT INTO `mydatabase`.`mytable` (`name`, `description`) 
VALUES 
    (
    CONCAT(
     'name-', 
     CAST(
     (SELECT 
      `auto_increment` + 1 
     FROM 
      `information_schema`.`TABLES` 
     WHERE `TABLE_SCHEMA` = 'mydatabase' 
      AND `TABLE_NAME` = 'mytable') AS CHAR 
    ) 
    ), 
    'description of this thing' 
) ; 

这样,你应该用行结束了5 id例如,和“名称-5”的name。这是一种混乱的方式去做,但它应该工作,不是吗?

想法?

+0

我不认为你可以那样做,对不起:( – haltabush 2012-03-24 01:58:42

回答

1

你应该看看到SQL命令“SHOW TABLE STATUS”

试试吧,再谷歌找到了如何拉“AUTO_INCREMENT”价值出来。

+0

)感谢你的回应,我发现了另一种可能的方法来获取值在'information_schema'数据库中的值 – 2012-03-24 13:19:03

+1

我会接受这个使我走上了正确的道路 – 2012-03-31 14:32:03

1

你不能用auto_increment字段。相反,您可以手动生成UIDunique primary key)并将其用于此目的。

0

不是那么糟糕。如果你不是从外部生成密钥,那么不需要。你可以在桌子上放置一个触发器,使其成为一个非自动增量,然后自己生成密钥。