展開全部
可以嘗試使用 last_insert_id() 來擷取一下看看。
下面是 僅僅在 mysql 下面的測試例子:
mysql> CREATE TABLE test_create_tab2 (
-> id INT AUTO_INCREMENT,
-> val VARCHAR(10),
-> PRIMARY KEY (id)
-> );
Query OK, 0 rows affected (0.09 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id');
Query OK, 1 row affected (0.03 sec)
mysql> select last_insert_id() as id;
+----+
|32313133353236313431303231363533e58685e5aeb931333332616435 id |
+----+
| 1 |
+----+
1 row in set (0.00 sec)
mysql> INSERT INTO test_create_tab2(val) VALUES ('NO id 2');
Query OK, 1 row affected (0.03 sec)
mysql> select last_insert_id() as id;
+----+
| id |
+----+
| 2 |
+----+
1 row in set (0.00 sec)
mysql> select * from test_create_tab2;
+----+---------+
| id | val |
+----+---------+
| 1 | NO id |
| 2 | NO id 2 |
+----+---------+
2 rows in set (0.00 sec)
C# 調用 MySql, 要同時完成 insert ... 與 select last_insert_id()
這個我沒有測試過。
C# 調用 SQL Server 的, 我倒是測試過的。
在 C# 中, 可以通過下面的方式, 一次執行2行 SQL 語句, 來完成插入并擷取最新ID 的處理邏輯.
/// 需要執行的 SQL 語句
/// 需要注意的是
/// 這裡實際上定義了2條語句
/// 一條是 INSERT
/// 一條是 SELECT SCOPE_IDENTITY()
private const String INSERT_SQL =
@"INSERT INTO test_SCOPE_IDENTITY (val)
VALUES (@val)
SELECT SCOPE_IDENTITY()";