可以通过自动增量pk获得插入的值吗?

时间:2012-03-24 01:57:11

标签: mysql primary-key

在使用自动增量主键列的表中插入行时,是否有办法获取将分配给该行的值?

要清楚,我想将此值用作同一行中不同列的字符串的一部分。

执行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'
  ) ;

这样,您应该得到一行id为5行,name为“name-5”。这是一种混乱的方式,但它应该有效,不是吗?

思想?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您应该查看SQL命令“SHOW TABLE STATUS”

尝试一下,然后谷歌进一步了解如何从中提取“auto_increment”值。

答案 2 :(得分:0)

不是那么糟糕。如果你没有在外部生成密钥,那么没有。您可以在表格上设置一个触发器并使其成为非自动增量,然后自己生成密钥。