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