我正在尝试创建 2 个 MySQL 语句,它们将在一个列中插入一个新行并在另一列中引用同一行,如下所示:
如果您需要知道,我正在使用 Java/com.mysql.jdbc.Driver
insertNewMessage = connection
.prepareStatement(new StringBuilder(128)
.append("INSERT INTO messages (Message,SHA256) VALUES (?,?);")
.append("INSERT INTO messagelog (MESSAGE_ID,SERVER_ID,CLIENT_ID) VALUES ((SELECT LAST_INSERT_ID()),?,?)")
.toString());
所以它更清楚,我的 SQL 语句是:
INSERT INTO messages (Message,SHA256) VALUES (?,?);
INSERT INTO messagelog (MESSAGE_ID,SERVER_ID,CLIENT_ID) VALUES ((SELECT LAST_INSERT_ID()),?,?)
我想获取在消息表中创建的新 ROWID 值并将其插入到消息日志表中。
我发现LAST_INSERT_ID()、mysql_insert_id()都不起作用。我收到以下异常:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO messagelog (MESSAGE_ID,SERVER_ID,CLIENT_ID) VALUES ((SELECT LAST_INS' at line 1
在 MYSQL 的文档中,听起来 Last_Insert_ID 应该可以工作,但我猜有一些警告。我不知道这些警告是什么。(是的,在 ROWID 上设置了 AI)