Получить LAST_INSERT_ID в этом скрипте bash - PullRequest
0 голосов
/ 29 октября 2019

У меня есть скрипт, выполняющий запросы MySQL (см. Ниже). Если это запрос INSERT, я хочу вернуть LAST_INSERT_ID (),

mysql_exec_result=$(
    printf "%s\n" \
      "[client]" \
      "user=${CONFIG_DB_USERNAME}" \
      "password=${CONFIG_DB_PASSWORD}" \
      "host=${CONFIG_DB_HOST}" \
      "port=${CONFIG_DB_PORT}" \
      "database=${CONFIG_DB_DATABASE}" \
      | HOME="/sys" mysql --defaults-file=/dev/stdin ${opts} -e "${query}"
  )

Спасибо за помощь!

1 Ответ

1 голос
/ 29 октября 2019

Поскольку вы выполняете запрос из-за пределов MySQL, вы можете использовать команды bash для выполнения других команд, зависящих от первого.

Вы можете сохранить свой запрос в переменной, а затем выполнить оператор if, как показано в следующем примере:

query="INSERT.....";
if [[ $query == *"INSERT"* ]]; 
then 
mysql -e "$query; SELECT LAST_INSERT_ID();"
else
mysql -e "$query"
fi

В приведенном выше примере, если выполняемый запрос содержит какую-либо команду INSERTзатем он получит LAST_INSERT_ID после запуска INSERT.

Если запрос не содержит INSERT, он будет выполнять запрос без получения LAST_INSERT_ID после завершения запроса.

Команда «mysql -e» может быть изменена таким образом, чтобы включить необходимые флаги.

Предоставленный пример оператора if может быть помещен в одну строку, как показано ниже:

query="INSERT....."; if [[ $query == *"INSERT"* ]]; then mysql -e "$query; SELECT LAST_INSERT_ID();"; else mysql -e "$query"; fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...