好的,所以我可以说我在INSERT我的一个表中做了一个mysql ,而且表中有一个item_id设置为autoincrement和的列primary key.
如何让查询item_id在同一查询中输出新生成的主键的值?
目前我正在运行第二个查询以检索id但这似乎不是一个好的做法,因为这可能会产生错误的结果......
如果这不可能,那么确保我检索正确ID的最佳做法是什么?
我有一个查询要在表中插入一行,该表有一个名为ID的字段,该字段使用列上的AUTO_INCREMENT填充.我需要为下一部分功能获取此值,但是当我运行以下操作时,即使实际值不为0,它也始终返回0:
MySqlCommand comm = connect.CreateCommand();
comm.CommandText = insertInvoice;
comm.CommandText += "\'" + invoiceDate.ToString("yyyy:MM:dd hh:mm:ss") + "\', " + bookFee + ", " + adminFee + ", " + totalFee + ", " + customerID + ")";
int id = Convert.ToInt32(comm.ExecuteScalar());
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这应该返回ID列,但每次只返回0.有任何想法吗?
编辑:
当我跑:
"INSERT INTO INVOICE (INVOICE_DATE, BOOK_FEE, ADMIN_FEE, TOTAL_FEE, CUSTOMER_ID) VALUES ('2009:01:01 10:21:12', 50, 7, 57, 2134);last_insert_id();"
Run Code Online (Sandbox Code Playgroud)
我明白了:
{"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right …Run Code Online (Sandbox Code Playgroud) Dim insert_coupon_query As String = ("INSERT INTO qa_discountcoupons (id, status_code) VALUES (AUTO_INCREMENT_ID, 5)")
Dim cmd_query As New MySqlCommand(insert_coupon_query, objConn)
Dim cmd_result As Integer = CInt(cmd_query.ExecuteScalar())
Run Code Online (Sandbox Code Playgroud)
我想返回当前插入的AUTO_INCREMENT值,并显示在msgbox中.