是否有内置函数返回插入或更新或删除的记录数?

时间:2014-11-28 15:52:39

标签: mysql

如果insert或update或delete语句是动态的或基于select语句,以便事先不知道插入或更新或删除的行数,是否有内置函数返回该数字?

4 个答案:

答案 0 :(得分:1)

php中的

可以得到受影响的记录

mysql_query('DELETE FROM mytable WHERE id < 10');
printf("Records deleted: %d\n", mysql_affected_rows());

答案 1 :(得分:1)

执行包含mysql_affected_rows()mysql_query()的语句后,可能会立即调用<mysql_real_query() UPDATE。它返回最后一个语句更改,删除或插入的行数(如果它是DELETEINSERTSELECT。对于mysql_affected_rows()语句,mysql_num_rows()的作用类似于{{1}}。

http://dev.mysql.com/doc/refman/5.0/en/mysql-affected-rows.html

答案 2 :(得分:0)

是使用:

SELECT ROW_COUNT();

发布插入/删除/ ..一行。

答案 3 :(得分:0)

在Java或为数据库提供接口的任何其他语言中,insert和update函数返回表中更新的行数。

以下是Java中的示例示例。

表名是样式,其架构定义为:

mysql> desc sample;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(45) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
1 row in set (0.04 sec)

在表中插入行的Java程序如下:

import java.sql.*;

public class Dbconnectivity {

    public static void main(String[] args) throws Exception {
        new com.mysql.jdbc.Driver();
        Connection myconn = DriverManager.getConnection("jdbc:mysql://localhost:3307/test","root","password");
        Statement st = myconn.createStatement();
        String query = "insert into test.sample values('random')";
        int x = st.executeUpdate(query);
        System.out.println("Number of records inserted : "+x);
    }
}

输出:

enter image description here

在代码中,变量x保存插入表中的记录数。

对于动态插入,您可以使用相同的代码并根据需要查找累积总和。