c# - 当不存在时,同一语句中的 MySQL Insert 和 Select 返回 'records'

标签 c# mysql sql

所以我有以下代码(大大简化)-

MySqlCommand CMD = new MySqlCommand(@"INSERT INTO helpdesk.calls Set CallID = @CallID, Viewed = 1, Date = current_timestamp();
SELECT * FROM helpdesk.calls WHERE ID = @CallID", Con);
CMD.Parameters.Add("CallID", MySqlDbType.Int32).Value = ID;
using (MySqlDataReader Reader = CMD.ExecuteReader()) {
    if (Reader.Read()) {
        RetVal = ToCallHeader(Reader);
    } else {
        // this never throws as Reader.Read() always returns true.
        throw new Exception(string.Format("Call ({0}) not found", ID));
    }
}

我在其中插入一条记录并同时运行一个选择。问题在于,当使用 insert 语句时,无论是否从 select 语句中选择任何行,Reader.Read() 都会返回 true。这是设计使然吗?一个事务是否需要两个查询?

最佳答案

插入查询语法错误,会抛出异常。

INSERT INTO helpdesk.calls Set CallID = @CallID, Viewed = 1, Date = current_timestamp();

在此处检查插入语句的正确 SQL 语法:https://www.w3schools.com/sql/sql_insert.asp

关于c# - 当不存在时,同一语句中的 MySQL Insert 和 Select 返回 'records',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45751014/

相关文章:

c# - 如何从同步创建异步方法

c# - 在 Windows 应用商店单元测试中使用 Windows.Devices.Geolocation.Geolocator

php - SQLSTATE[HY000] [2002] 尝试将 Laravel 数据库连接到 Heroku 时连接被拒绝

sql - LINQ to SQL 设计器错误

sql - 什么是数据库中的半连接?

c# - 检查 StreamReader 是否可以读取另一行

c# - 如何在 .NET Core Razor 页面中使用 Setter 扩展 UserManager?

php - PHP登录后进入下一页

PHP MySQL 检查组合并显示特定值

javascript - SQL 与 Sequelize : Compare json columns using where