代码之家  ›  专栏  ›  技术社区  ›  Ankur

SQL:是否可以将insert和select语句组合为一个语句?

  •  0
  • Ankur  · 技术社区  · 15 年前

    我想使用sqls insert语句添加一行。有没有可能,作为这个语句的一部分,我可以以某种方式获得列userid的值,这个值不是我更新的,而是自动递增的主键。我需要这个值来更新另一个表,但是我不能在insert语句后面紧跟select语句,因为在要选择的表中没有其他唯一标识符。

    INSERT INTO objectUrl(disp_name, loggedIn) VALUES('please change this', true)
    

    是否可以获取行号(列名userid),如果可以,如何获取?

    2 回复  |  直到 15 年前
        1
  •  3
  •   colithium    15 年前

    在MySQL中,它被称为last_insert_id()。我相信从技术上讲是正确的,这两个语句应该包装在一个事务中,这样其他一些插入就不会弄乱您返回的ID。

    在SQL Server中,您有标识current(_ tablename_),它将只从该表中获取它(仍然需要一个事务来保证安全)。您还可以使用scope_Identity(),理论上,只要您的连接没有做任何奇怪的事情,它将始终返回您期望的那个。

        2
  •  2
  •   LittleBobbyTables - Au Revoir    15 年前

    对于MySQL,您有:

    select last_insert_id()