2012-02-08 79 views

回答

1

对于SQL Server

SELECT IDENT_CURRENT('tablename') 

对于我的SQL

INSERT INTO foo (auto,text) 
    VALUES(NULL,'text');   # generate ID by inserting NULL 
INSERT INTO foo2 (id,text) 
    VALUES(LAST_INSERT_ID(),'text'); # use ID in second table 

MySQL的将是LAST_INSERT_ID()功能:

SELECT LAST_INSERT_ID(); 
+0

请确保您锁定表,如果您使用LAST_INSERT_ID() – Cez 2012-02-08 13:21:39

+0

@ user1197238 - 那么你想说什么..... – 2012-02-08 13:32:40

+0

我使用VB .NET语言和连接器是ODBC? – user1197238 2012-02-08 13:51:27

1
INSERT INTO t2 (t1_id) SELECT id FROM t1 

添加条件选择如有必要

要使用此查询假设AUTO_INCREMENT得到最后ID:

INSERT INTO t2 (t1_id) SELECT id FROM t1 ORDER BY id DESC LIMIT 1 

要使用此查询假设有一个时间戳获取最后的ID记录(例如创建):

INSERT INTO t2 (t1_id) SELECT id FROM t1 ORDER BY created DESC LIMIT 1 

按照从ypercube的评论,如果你是:

  • 具有相同的连接,进行1次插入,
  • 没有使用持久连接,并
  • 不使用连接池

然后你可以使用LAST_INSERT_ID()。

如果

  • 使用永久连接,或
  • 使用连接池,或
  • 一次

然后选择之一以上是插入多行最好

+0

我正在使用VB.NET语言并且连接器是ODBC? – user1197238 2012-02-08 13:47:59

+0

@ user1197238您是否无法执行直接查询? – Cez 2012-02-08 13:57:25

+0

我想获取插入到数据库中的最后一个ID,您可以帮我吗? – user1197238 2012-02-08 15:02:45

相关问题