数据库auto属性

本文分别介绍了sqlite3、PostgreSQL、MySQL和MongoDB中关于自增属性的使用和特性。在sqlite3中, INTEGER PRIMARY KEY可以隐式或显式设置自增,而 AUTOINCREMENT会避免值的重复使用。PostgreSQL的smallserial、serial和bigserial类似,但用户手动插入值可能导致冲突。MySQL的AUTO_INCREMENT列允许手动插入值,系统会自动检测。MongoDB的_id列虽然不支持自增,但可以通过其他方式实现。
摘要由CSDN通过智能技术生成

1.sqlite3

  两种方式设置auto:

  1.  建表时隐式创建它INTEGER PRIMARY KEY
  2. 使用AUTOINCREMENT关键字显式创建

方式1利用了rowid; 方式2是另一套不同的算法,采用了中间表SQLITE_SEQUENCE table记录增长。详细介绍见官网:https://sqlite.org/autoinc.html

AUTOINCREMENT:

       AUTOINCREMENT的主键必须是INTEGER类型,但是INTEGER类型的主键本身默认就是自动增长的。
       AUTOINCREMENT并不是字面上“自动增长”的意思(或许2.3.4版本以前是,但现在不是),而是表示当id等于最大支持的数后(9223372036854775807),再插入数据时可以重复使用原来已删除或没有使用的行。AUTOINCREMENT的一个缺点是,它使用了额外的CPU,内存,磁盘空间和磁盘I/O开销。

对INTEGER PRIMARY KEY手动插入一个后续值比如20,而auto之前的值小于20,当auto下一个为20时,sqlite3不会出错,会自动检测。

2.PostgreSQL

       PostgreSQL数据类型为smallserial,serial和bigserial时,拥有类似于某些其他数据库支持的AUTO_INCREMENT属性。这些不是真实的类型,而仅仅为了创建唯一标识符列的符号方便。类型名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值