搜索

pdf文档 Firebird Generator Guide: A guide on how and when to use generators in Firebird

169.00 KB 20 页 0 下载 144 浏览 0 评论 0 收藏
所属分类: 数据库 / Firebird
语言 格式 评分
英语
.pdf
3
摘要
文档详细介绍了Firebird数据库中的生成器(generator)及其使用方法。生成器是一种线程安全的整数计数器,用于生成唯一标识符。文档解释了生成器与序列(sequence)的关系,说明了如何创建、使用和管理生成器,并讨论了其在不同Firebird版本中的行为差异。内容还涉及生成器的存储位置、事务处理、最大值范围以及如何通过命令行工具和SQL语句操作生成器。
AI总结
### Firebird 生成器指南总结 #### 1. 概述 本文档主要介绍 Firebird 数据库中的生成器(Generators)及其使用方法,旨在帮助用户理解生成器的功能、应用场景以及如何管理它们。生成器类似于其他数据库中的“序列”(Sequence),用于生成唯一的整数序列值。 --- #### 2. 生成器基础 - **什么是生成器?** 生成器是 Firebird 数据库中的一个“线程安全”整数计数器,用于生成唯一值。它类似于编程语言中的变量,但存储在数据库中且独立于事务控制。 - **生成器与序列的关系** Firebird 中的“序列”(Sequence)是生成器的同义词。两者在功能上完全相同,只是名称不同。推荐在新代码中使用 `SEQUENCE` 语法,因为这是 Firebird 对 SQL 标准的更合规实现。 - **生成器的存储位置** 生成器的定义存储在系统表 `RDB$GENERATORS` 中,而其值存储在数据库的预留页中。用户无法直接访问这些值,必须通过内置函数(如 `GEN_ID`)来操作。 --- #### 3. 生成器的使用 - **创建生成器** - 客户端 SQL:`CREATE GENERATOR GeneratorName;` - 推荐语法(Firebird 2 及以上):`CREATE SEQUENCE SequenceName;` - PSQL 中无法直接在存储过程或触发器中创建生成器。 - **获取当前值** - 客户端 SQL:`SELECT GEN_ID(GeneratorName, 0) FROM RDB$DATABASE;` - Firebird 命令行工具 `isql` 支持 `SHOW GENERATOR GeneratorName;` 和 `SHOW GENERATORS;`。 - **生成下一个值** - 客户端 SQL:`SELECT GEN_ID(GeneratorName, 1) FROM RDB$DATABASE;` - 推荐语法(Firebird 2 及以上):`SELECT NEXT VALUE FOR SequenceName FROM RDB$DATABASE;` - **直接设置值** - 客户端 SQL:`SET GENERATOR GeneratorName TO NewValue;` - 推荐语法(Firebird 2 及以上):`ALTER SEQUENCE SequenceName RESTART WITH NewValue;` - **删除生成器** - 客户端 SQL:`DROP GENERATOR GeneratorName;` - 推荐语法(Firebird 2 及以上):`DROP SEQUENCE SequenceName;` --- #### 4. 生成器的高级主题 - **事务与生成器** 生成器独立于事务控制。一旦获取了生成器的值,即使事务回滚,该值也不会恢复。因此,生成器的值被视为“不可回滚”。 - **性能与限制** 生成器的值范围为 64 位整数(-2⁶³ 到 2⁶³ - 1),几乎可以忽略溢出问题。Firebird 数据库的性能不会因生成器数量而显著下降。 - **历史版本的差异** - 在早期版本(如 InterBase 6 及以下),生成器的数量受数据库页面大小限制。 - Firebird 2 及以上版本支持最多 32767 个生成器。 - **系统表 `RDB$GENERATORS`** 该表包含以下字段: - `RDB$GENERATOR_NAME`(生成器名称,CHAR(31)) - `RDB$GENERATOR_ID`(生成器 ID,SMALLINT) - `RDB$SYSTEM_FLAG`(系统标志,1 表示系统生成器,0 或 NULL 表示用户生成器) - `RDB$DESCRIPTION`(描述,BLOB 类型,仅在 Firebird 2.0 及以上版本支持) --- #### 5. 使用场景 - **自增字段** 生成器可用于模拟其他数据库的自增字段(如 MySQL 的 AUTO_INCREMENT)。 - **唯一标识符** 生成器常用于生成唯一标识符(如主键值)。 - **控制事务** 生成器可用于控制长-running 存储过程的执行次数。 --- #### 6. 总结 Firebird 的生成器是一种强大的工具,用于生成唯一值和管理序列。通过 `CREATE SEQUENCE`、`ALTER SEQUENCE` 和 `DROP SEQUENCE` 等语法,用户可以轻松创建、修改和删除生成器。生成器独立于事务,因此在使用时需注意其不可回滚的特性。推荐在新代码中使用 `SEQUENCE` 语法,以符合 SQL 标准并提升代码的可读性。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 13 页请下载阅读 -
文档评分
请文明评论,理性发言.