zoukankan      html  css  js  c++  java
  • 关于mysql auto-increment

    创建表语句如下
    mysql> show create table TautoincrementG
    *************************** 1. row ***************************
    Table: Tautoincrement
    Create Table: CREATE TABLE `Tautoincrement` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(10) DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)

    如下插入数据报错
    mysql> insert into Tautoincrement values('zs');
    ERROR 1136 (21S01): Column count doesn't match value count at row 1
    即需要提供与建表时相同的列值
    故用下述方式插入数据
    mysql> insert into Tautoincrement(name) values('zs');
    查询结果如下
    +----+------+
    | id | name |
    +----+------+
    | 1 | zs |
    继续插入数据
    mysql> insert into Tautoincrement(id,name) values(3,'zs');
    查询结果如下
    +----+------+
    | id | name |
    +----+------+
    | 1 | zs |
    | 3 | zs |
    依旧没什么问题,但是可以得出一个结论,innodb类型的数据库允许用户插入autoincrement限制的列的值,与sqlserver有所不同,
    继续插入数据
    mysql> insert into Tautoincrement(name) values('zss');
    查询结果如下
    +----+------+
    | id | name |
    +----+------+
    | 1 | zs |
    | 3 | zs |
    | 4 | zss |
    可以发现,已经autoincrement的默认值已经跳过id=2的情况,需注意,
    此时执行 select last_insert_id() 返回结果为4 ###还有一个问题,该函数返回该数据库下的最新值,所以说不一定是你最新插入的id,有点尴尬
    后面验证得知
    同时插入大量数据, last_insert_id() 返回第一次插入时id

  • 相关阅读:
    触发器
    累加求和存储过程
    check约束条件
    数据库的备份还原
    创建万能分页
    视图
    进销存存储过程
    函数存储过程
    数据库作业27~45
    数据库作业17~26
  • 原文地址:https://www.cnblogs.com/aierben/p/12747718.html
Copyright © 2011-2022 走看看