как получить автоматическое увеличение хранимой процедуры в MySQL - PullRequest
0 голосов
/ 24 января 2019

Я использую приведенный ниже код для вызова p_CreateRequest.Все, что я хочу, это получить идентификатор обратно, но я получаю поле "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

1 Ответ

0 голосов
/ 24 января 2019

Необходимо изменить таблицу и установить ID:

id int(20) NOT NULL AUTO_INCREMENT,

Также проверьте, находится ли MySql в Режим строгого SQL .Если это так, необходимо выполнить запрос:

SET GLOBAL sql_mode=''.

Вы также можете изменить свой my.cnf / my.ini, чтобы убедиться, что вы не устанавливаете STRICT_ALL_TABLES и / или STRICT_TRANS_TABLES.См. Это для получения дополнительной информации:

Поле 'id' не имеет значения по умолчанию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...