`

不同数据库获取新增加的主键值

阅读更多

 不同数据库获取新增加的主键值

 

数据库
获取新增主键的查询语句
DB2
IDENTITY_VAL_LOCAL()
Informix
SELECT dbinfo('sqlca.sqlerrd1') FROM <TABLE>
Sybase
SELECT @@IDENTITY
SqlServer
SELECT SCOPE_IDENTITY()或SELECT @@IDENTITY
MySql
SELECT LAST_INSERT_ID()
HsqlDB
CALL IDENTITY()
Cloudscape
IDENTITY_VAL_LOCAL()
Derby
IDENTITY_VAL_LOCAL()
PostgreSQL
SELECT nextval('<TABLE>_SEQ')
 
 如果数据库的并发率很高,比如在插入记录后执行查询主键之前,数据库又执行了若干条插入记录的SQL语句,这时,通过表 1 返回的主键值就是最后一条插入语句的主键值,而非我们希望的主键值了。所以使用查询语句获取表自增键值是不安全的,这也是为什么有些数据库(如 Oracle、Firebird)故意不提供自增键,而只提供序列的原因,序列强制要求你在新增记录前,先获取主键值。Oracle通过SELECT <SEQUENCE_NAME>.nextval FROM DUAL获取序列的下一个值,而FireBird通过SELECT GEN_ID(<SEQUENCE_NAME> 1) FROM RDB$DATABASE获取序列的下一个值。在10.4.1小节中,我们还将讲解应用层自增键的相关知识。
0
0
分享到:
评论

相关推荐

    mysql取得自动增长的主键值

    ### MySQL获取自动增长的主键值 在MySQL数据库中,自动增长...通过以上知识点的学习,我们可以更好地理解和掌握MySQL中获取自动增长主键值的方法及其应用场景,这对于日常的数据库管理和应用开发都有着重要的意义。

    redis键值对型数据库知识详解.zip

    Redis是一款高性能的键值对型数据库,广泛应用在缓存、数据持久化、消息队列等多个领域。本资料详细解析了Redis的基本概念、数据结构、操作命令以及实际应用场景,旨在帮助读者深入理解并熟练掌握Redis的使用。 一...

    数据库主键设计原则 设计数据库主健

    根据描述,作者倾向于使用字符型而非自增方式,并且在新增记录时由系统自动生成主键值。这种方式具有一定的灵活性,可以根据具体需求定义主键值的生成规则。 #### 三、GUID作为主键的考虑 1. **优点**: - GUID...

    Android-为Android项目提供的轻量且易用的键值数据库

    QuickKV是一款专为Android应用程序设计的轻量级、易用的键值数据库,它简化了在Android中存储和检索键值对的过程。在传统的Android开发中,初始化Map和List对象通常涉及较多的代码和资源,这增加了开发的复杂性。...

    cpp-LF全去中心化复制型键值型KV数据库

    《全面解析cpp-LF全去中心化复制型键值型KV数据库》 cpp-LF,一个基于C++语言实现的全去中心化、完全复制的键值存储系统,旨在提供高效、可靠的数据存储解决方案。在分布式系统领域,键值型(Key/Value)数据库因其...

    MyBatis主键自动生成方法.pdf

    当我们在插入数据时,有时希望数据库能够自动为新记录生成唯一的主键值,而不是手动指定。MyBatis提供了一种机制来处理这种需求,主要通过`useGeneratedKeys`和`selectKey`元素实现。 1. `useGeneratedKeys="true"`...

    从数据库中读取数据到Table中

    - `DataTableModel.java` 可能代表一个自定义的Java Swing `DefaultTableModel`子类,用于将从数据库获取的数据展示在JTable组件中。`TableModel`接口定义了如何与数据模型交互的规范,包括添加、删除和更新数据。 ...

    浅谈Redis数据库的键值设计

    与关系型数据库不同,Redis允许开发者直接操作数据结构,从而在设计键值时需要更深入地理解业务场景。这里我们将探讨如何在Redis中设计键值,以及与关系型数据库的对比。 在用户登录系统这个例子中,我们可以看到,...

    完整的数据库操作类

    1. **增加(Insert)**:这个功能允许开发者向数据库表中插入新的记录。类库可能提供一个方法,接收必要的参数,如表名和字段值,然后生成并执行相应的INSERT SQL语句。 2. **删除(Delete)**:用于移除数据库中的...

    非关系数据库

    例如,在键值对数据库Redis中,你可以使用`SET key value`来设置键值,`GET key`来获取值;在文档型数据库MongoDB中,可以使用`db.collection.insertOne()`插入文档,`db.collection.find()`查询文档;在列族数据库...

    在SQLSERVER中通过存储过程和触发器创建主键生成器

    在这里,我们可以创建一个`AFTER INSERT`触发器,每当有新记录插入到表中时,调用我们的存储过程获取新的主键值。 ```sql CREATE TRIGGER trg_AutoGenerateKey ON YourTable AFTER INSERT AS BEGIN DECLARE @...

    c#winform简单数据库增删改查

    1. **增加(Insert)**:用户在DataGridView中填写新记录后,可以使用`SqlCommand`的`ExecuteNonQuery()`方法执行INSERT语句,将数据插入数据库。 2. **删除(Delete)**:当用户选中一条记录并执行删除操作时,...

    图形数据库

    属性图则是在节点和边上增加了属性信息,每个节点或边都可以带有键值对形式的属性信息。 图数据库的定义包括了它的数据模型、查询语言和操作机制。图数据库的数据模型强调数据元素间的直接连接,查询语言通常为声明...

    浅谈Java web中基于Hashtable的数据库操作.pdf

    3. 自动扩容:当元素数量达到一定阈值时,Hashtable会自动增加存储空间,以容纳更多的键值对。 4. 简单的API:Hashtable提供了一组简单的API来插入、检索、更新和删除键值对。 Hashtable类提供的常用方法包括: 1. ...

    初识通用数据库操作类——前端easyui-datagrid,form(php)

    它接受一个主键值、对应的列名和表名作为参数,执行一个DELETE SQL语句从数据库中删除记录。 - insertData($objectstr,$tablename)方法:这个方法用于插入数据。它将JSON格式的字符串转换成PHP数组,然后根据表名和...

    Sybase 数据库查询索引优化

    在数据库管理领域,Sybase是一种广泛使用的高性能关系型数据库管理系统,尤其在金融、电信等对数据处理速度有高要求的行业中。本主题聚焦于“Sybase数据库查询索引优化”,这是提升数据库性能的关键技术之一。索引是...

    Oracle数据库、SQL

    - **创建数据库** `create database dbname` 命令用于在Oracle中创建新的数据库实例。 - **安装DBMS** 是在服务器上部署Oracle软件的过程,确保系统支持TCP/IP协议以进行远程访问。 2. **SELECT FROM语句** - **...

    20 数据库高频知识点.docx

    非关系型数据库采用文档、键值对等多种数据模型。 - **扩展性**:非关系型数据库更容易实现水平扩展。 - **事务支持**:关系型数据库通常支持完整的事务管理。 #### 数据库设计 **11. 数据库三范式** - **第一范式...

    sql数据库学习总结.docx

    实体完整性规定每条记录都有唯一的主键值,不允许为空。为了维护数据完整性,可以使用约束,如主键约束(PRIMARY KEY)确保主键的唯一性和非空性,唯一约束(UNIQUE)用于防止非主键列的重复值,检查约束(CHECK)则...

    Redis使用教程,详解

    随着 web2.0 的兴起,高并发读写、高效率存储和访问海量数据的需求日益增加,NoSQL 数据库应运而生。NoSQL 数据库的四大分类是键值存储、列存储、文档数据库和图形数据库。 Redis 概述 Redis 是一个高性能的键值...

Global site tag (gtag.js) - Google Analytics