shell脚本获取mysql插入数据自增长id的值

在shell脚本中我们可以通过last_insert_id()获取id值,但是,需要注意的是,该函数必须在执行插入操作的sql语句之后,立即调用,否则获取的值就为0,LAST_INSERT_ID 是与table无关的,如果向表a插入数据后,在向表b插入数据,LAST_INSERT_ID会改变。当然还有其他方法:

1. select max(id) from tablename;
2. select @@IDENTITY;
3. SHOW TABLE STATUS;
具体的差别和各自具体的特征,本文不再叙述,自行百度即可.

本文主要以LAST_INSERT_ID()为例:

错误代码示例如下:

echo
$($MYSQL -e "INSERT INTO problem_logger VALUES (null,$REPORT_DATE,$FIXED_DATE,'$PROB_SYMPTOMS','$PROB_SOLUTIONS');")
id=$($MYSQL -e "SELECT LAST_INSERT_ID() id")
id=`echo $id | gawk '{print $2}'`
$MYSQL <<EOF
SELECT * FROM problem_logger where id_number=$id\G
EOF

上述代码获取到的id值就为0,而不是我们期望的值

正确的代码如下:
echo
$($MYSQL -e "INSERT INTO problem_logger VALUES (null,$REPORT_DATE,$FIXED_DATE,'$PROB_SYMPTOMS','$PROB_SOLUTIONS');")id=$($MYSQL -e "SELECT LAST_INSERT_ID() id")
id=`echo $id | gawk '{print $2}'`
$MYSQL <<EOF
SELECT * FROM problem_logger where id_number=$id\G
EOF

完整的访问数据库,插入数据,并获取自增id值的shell脚本如下:

备注:1. 数据库名称:Problem_Trek      操作的表名称:problem_logger

#!/bin/bash
#
# Record_Problem - records system problems in database
#
###########################################################
#
# Determine mysql location & put into variable
#
MYSQL=`which mysql`" Problem_Trek -u root"
#
###########################################################
#
# Create Record Id & Report_Date
#
#ID_NUMBER=`date +%y%m%d%H%M`
#
REPORT_DATE=`date +%y%m%d`
#
############################################################
#
# Acquire information to put into table
#
echo
echo -e "Birefly describe the problem & its symptoms: \c"
#
read ANSWER
PROB_SYMPTOMS=$ANSWER
#
# Set Fixed Date & Problem Solution to null for now
#
FIXED_DATE=0
PROB_SOLUTIONS=""
#
#############################################################
#
# Insert acquired information into table
#
echo
echo "Problem recorded as follows:"
echo
id=$($MYSQL -e "INSERT INTO problem_logger VALUES (null,$REPORT_DATE,$FIXED_DATE,'$PROB_SYMPTOMS','$PROB_SOLUTIONS');SELECT LAST_INSERT_ID() id")
id=`echo $id | gawk '{print $2}'`
$MYSQL <<EOF
SELECT * FROM problem_logger where id_number=$id\G
EOF
#
#############################################################
#
# Check if want to enter a solution now
#
echo
echo -e "Do you have a solution yet?(y/n) \c"
read ANSWER
#
case $ANSWER in
y|Y|YES|yes|Yes|yEs|yeS|YEs|yES)./Update_Problem.sh $id
#
;;
*)
# if answer is anything but yes, just exit script
;;
esac
#
############################################################

转载于:https://www.cnblogs.com/shadowHouse/p/5519454.html

shell脚本获取mysql插入数据自增长id的值相关推荐

  1. Mysql 中获取刚插入的自增长id的值

    1 insert into user (username,password) VALUES ('zyl','123'); 2 //获取刚插入的自增长id的值 3 select last_insert_ ...

  2. 用shell脚本给mysql插入数据_shell脚本向mysql表批量插入数据

    如何使用shell向mysql数据库表中插入大量测试数据. 用shell脚本通过while循环批量生成mysql测试数据的方法,根据自己的表结构来生成sql语句即可. 代码: 复制代码 代码示例: # ...

  3. 用shell脚本给mysql插入数据_mysql下通过shell脚本插入数据

    一.创建数据库及表 建立数据库create database dic character set utf8; 建表CREATE TABLE `dic` ( `id` int(22) unsigned  ...

  4. jdbc 3种获得mysql插入数据的自增字段值的方法_JDBC 3种获得mysql插入数据的自增字段值的方法...

    JDBC 3种获得mysql插入数据的自增字段值的方法. 1. Retrieving AUTO_INCREMENT Column Values using Statement.getGenerated ...

  5. shell脚本操作数据库插入数据

    shell脚本实现添加用户 主方法:定义变量,调用函数. shell中的特殊变量 $#:脚本输入参数的个数 $? 上个命令的退出状态,或函数的返回值 $$ 当前Shell进程ID.对于 Shell 脚 ...

  6. jdbc 3种获得mysql插入数据的自增字段值的方法_【JDBC】向数据表插入数据时,自动获取生成的主键...

    数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...

  7. mysql 自增长id string_Mysql中获取刚插入的自增长id的三种方法归纳

    我们在写数据库程序的时候,经常会需要获取某个表中的最大序号数, 一般情况下获取刚插入的数据的id,使用select max(id) from table 是可以的. 但在多线程情况下,就不行了. 下面 ...

  8. mysql 插入数据 自增长_MySQL ------ 插入数据(INSERT和insert select)(二十)

    数据插入(INSERT): 用来插入(或添加)行到数据表中.也可利用mysql 的安全机制机制使用insert 语句 可使用的四种方式:插入完整的行,插入行的一部分,插入多行和插入某些查询结果 一.插 ...

  9. mysql 插入数据 自增长_如何在MYSQL插数据 ID自增

    2种解决办法 1.修改你的数据库表,将ID设为自增长,注:只有主键才可以设置为自增长 例:CREATE TABLE `message ` (`id` INT(8) NOT NULL AUTO_INCR ...

最新文章

  1. mysql 存储过程 获取错误,MySQL存储过程相互调用并获得错误码示例
  2. mac 终端里进入mysql和退出
  3. 收藏:asp.net
  4. machine learning (2)-linear regression with one variable
  5. android 将SQLite数据库的表格导出为csv格式,并解析csv文件
  6. Spring MVC笔记 添加错误页面
  7. 商汤科技-数据运维工程师-提前批笔试题目汇总
  8. ThinkPHP中的find和select的区别
  9. MySQL笔记-utf8和utfmb4
  10. AC日记——爱改名的小融 codevs 2967
  11. 好用的软件网址(不一定是官网,不定时更新)
  12. Java基础系列:switch+enum
  13. 学习典范【管理学之七】
  14. 用python怎么读文件_python怎么读文件
  15. 打开计算机管理窗口命令,Win7如何打开命令行窗口?打开命令行窗口的方法
  16. Spring源码学习(三)-- 底层架构核心概念解析
  17. VariantsTransport_SAP刘梦_新浪博客
  18. DEEP LEARNING 500 QUESTIONS PDF
  19. HDLC协议的特点及功能,让你一看就会
  20. qml 不刷新 放大还原_耳放攻略2020版|提升耳机音质,怎么买才不坑?手把手教你买...

热门文章

  1. 电脑上玩和平精英_和平精英奇幻之旅怎么玩-和平精英奇幻之旅玩法攻略
  2. python程序初学者计算器界面_Python初学者,一个简单的计算器程序的数学函数
  3. VUE 学习代码理解(1~5课时代码)
  4. Spring与SpringBoot 学习笔记(1)
  5. hive 建表java_hive创建表报错
  6. 创建一个urdf机器人_Matlab官方机器人工具箱Robotics System Toolbox官网翻译教程2
  7. 恢复html的初始选定状态,jQuery实现点击旋转,再点击恢复初始状态动画效果示例...
  8. mschart走势图 vc_[VC] 解决MSChart闪烁的问题
  9. 基于modbus协议的工业自动化网络规范_一种基于Modbus的工业通信网关设计
  10. r语言结构方程模型可视化_R语言时间序列分析(二):ts对象及其可视化