通过 JDBC 执行 MySQL "INSERT IGNORE" 语句时是否可以获得重复计数?
例如,当我在 mysql 命令行上执行 INSERT IGNORE 语句时,有重复我得到类似
查询正常,0 行受影响(0.02 秒)记录:1 重复:1 警告:0
注意它在哪里说“重复:1”,表示有重复被忽略。
通过 JDBC 执行查询时是否可以获得相同的信息?
谢谢。
在执行 INSERT IGNORE 时,您可以使用 ROW_COUNT() 和 FOUND_ROWS() 函数来确定插入行数和重复行数。
例如 :
SELECT ROW_COUNT(), FOUND_ROWS()
INTO myRowCount, myFoundRows;
myInsertedRows = myRowCount;
myDuplicateRows = myFoundRows - myInsertedRows;
COMMIT;
SHOW WARNINGS
我相信您可以通过在插入后 发出来检索它。
您可以rows affected
通过 JDBC 获取值。只需从您插入的行数中减去它。
请记住,这rows affected
还包括受查询间接影响的行。因此,如果有任何触发器影响其他行,rows affected
也将包括这些行。
见:http ://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html#executeUpdate ()