【问题标题】:how to get an auto incrementing stored procedure in mysql如何在mysql中获得一个自动递增的存储过程
【发布时间】:2019-06-17 15:58:47
【问题描述】:

我正在运行以下代码来调用 p_CreateRequest。我想要的只是找回 ID,但我得到一个字段“ID”没有默认值错误。帮助

 using (var conn = Conn)
            {
                using (var cmd = new MySql.Data.MySqlClient.MySqlCommand("p_CreateRequest", conn))
                {
                    cmd.CommandType = System.Data.CommandType.StoredProcedure;
                    cmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("CREATED_DATE", cREATED_DATE));
                    cmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("WORKFLOW_ID", wORKFLOW_ID));
                    cmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("CREATED_BY_USER_ID", cREATED_BY_USER_ID));
                    cmd.Parameters.Add(new MySql.Data.MySqlClient.MySqlParameter("ID", iD));
                    cmd.Parameters["ID"].Direction = System.Data.ParameterDirection.Output;
                    cmd.ExecuteNonQuery();

                    iD = (int)cmd.Parameters["ID"].Value;
                    return iD;
                }
            }

sprocs 代码是

CREATE DEFINER="finnsch"@"%" PROCEDURE "p_CreateRequest"(CREATED_DATE datetime,
WORKFLOW_ID int, CREATED_BY_USER_ID varchar(50),INOUT ID int)
BEGIN
  DECLARE LASTCHANGEDATE Date;
  SET LASTCHANGEDATE = Now();
  INSERT INTO REQUEST 
  (CREATED_DATE,WORKFLOW_ID,CREATED_BY_USER_ID,
CURRENT_STEP_ID,LAST_ACTION_BY,LAST_EDIT_DATE)
 select 
 CREATED_DATE,WORKFLOW_ID,CREATED_BY_USER_ID,s.ID,
CREATED_BY_USER_ID,LASTCHANGEDATE
 from 
 STEP s where s.WORKFLOW_ID=WORKFLOW_ID and s.IS_INITIAL=1;
 set ID = Last_Insert_ID();
END

【问题讨论】:

    标签: c# mysql sql


    【解决方案1】:

    需要更改表并将ID设置为:

    id int(20) NOT NULL AUTO_INCREMENT,
    

    另外,检查 MySql 是否在Strict SQL Mode 中。如果是,则需要运行查询:

    SET GLOBAL sql_mode=''.
    

    您还可以修改您的 my.cnf / my.ini 以确保您没有设置 STRICT_ALL_TABLES 和/或 STRICT_TRANS_TABLES。有关更多信息,请参阅此内容:

    Field 'id' doesn't have a default value?

    【讨论】:

      猜你喜欢
      • 2014-07-06
      • 1970-01-01
      • 2020-06-22
      • 2011-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多