c# - 临时表还是截断修复表?

标签 c# mysql

我从两个表中获取了 5 个字段来插入到另一个表中。使用临时表或修复表并在每次使用时截断它是否更有效?

如果临时表更有效,如何在 C# 中创建临时表。因为这个sql不起作用?

    public static void CreateTempProd()
    {
        int result;
        string sqlstr = "CREATE TEMPORARY TABLE ##tmptbl (id int NOT NULL AUTO_INCREMENT, dt DATETIME NOT NULL, qty int11 NOT NULL, rest int11 NOT NULL, nom VARCHAR(30) NOT NULL NOT NULL  PRIMARY KEY id, ENGINE=MEMORY DEFAULT CHARSET=UTF8)";

        MySqlConnection conn = new MySqlConnection(PublicVariables.cs);
        MySqlCommand cmd = new MySqlCommand(sqlstr,conn);
        MySqlTransaction trans;
        conn.Open();
        trans = conn.BeginTransaction();
        try
        {
            result = cmd.ExecuteNonQuery();
        }
        catch (MySqlException e)
        {
            trans.Rollback();
            MessageBox.Show(e.ToString());
            return;
        }
        trans.Commit();
    }

最佳答案

你的 SQL 语法有点不对;

CREATE TEMPORARY TABLE ##tmptbl (           -- ## needs quoting
    id int NOT NULL AUTO_INCREMENT,
    dt DATETIME NOT NULL, 
    qty int11 NOT NULL,                     -- int11 should be int(11)
    rest int11 NOT NULL,                    -- int11 should be int(11)
    nom VARCHAR(30) NOT NULL NOT NULL       -- double NOT NULL
    PRIMARY KEY id,                         -- id needs braces
    ENGINE=MEMORY DEFAULT CHARSET=UTF8      -- should go outside the table braces
)

也就是说,它应该是这样的......

CREATE TEMPORARY TABLE `##tmptbl` (
  id int NOT NULL AUTO_INCREMENT,
  dt DATETIME NOT NULL, 
  qty int(11) NOT NULL, 
  rest int(11) NOT NULL, 
  nom VARCHAR(30) NOT NULL,
  PRIMARY KEY (id)
)
ENGINE=MEMORY DEFAULT CHARSET=UTF8

一个好主意是尝试在 mysql 命令提示符下运行确切的查询,这样会捕获此错误并允许您修复它。

关于c# - 临时表还是截断修复表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19888212/

相关文章:

c# - MVC + EntityFramework + 字段验证

c# - DataGridView 新线程内默认报错

c# - 在 asp.net web api Controller 中使用异步方法有什么好处吗?

c# - 从 asp.net POST 方法返回 JSON 时出现 "Unable to translate Unicode character\\uD83C"错误

带有 Union All 的 View 中的 MySQL Case 语句

mysql - SQL电话号码转换函数

javascript - Angularjs 如何将选中的复选框的值发送到 .php?

MySQL:何时分解/分割表

c# - MVVM:实现 ViewModel 的类不更新其模型实例

C# 套接字检查连接