pdf文档 firebird generator guide ru

227.10 KB 23 页 0 评论
语言 格式 评分
俄语
.pdf
3
摘要
本文档详细介绍了Firebird数据库中的生成器(generator),其作用相当于Oracle中的序列(sequence)。生成器是用于生成唯一整数值的机制,适用于主键生成等场景。文档介绍了生成器的创建、操作方法,如CREATE GENERATOR、SET GENERATOR、DROP GENERATOR等DDL语句,以及GEN_ID等函数的使用。Firebird 2及以上版本推荐使用SEQUENCE语法,且生成器的信息存储在系统表RDB$GENERATORS中,用户应避免直接操作此表。生成器的值存储在数据库的特殊页面中,通过特定的函数来访问。
AI总结
### 《Firebird Generator Guide RU》中文总结 #### 1. 介绍 - **什么是生成器?** 在Firebird数据库中,生成器(Generator)是一个线程安全的整数计数器,用于生成唯一的数值序列,类似于其他数据库中的自增字段或Oracle的序列(Sequence)。生成器的值存储在数据库的特殊_pages_中,且不能直接访问。 - **为什么使用生成器?** - 自动生成唯一标识符(如主键)。 - stimulatedWithValue需求的 inflammable 数据库设计。 - FIREB IRD 2及以上版本支持SQL标准 Sequences 语法。 - **适合阅读本文档的读者:** - 对生成器概念不熟悉的用户。 - 需要了解如何创建或使用生成器的用户。 - 需要了解 Firebird 中与 Oracle Sequences 相似功能的用户。 --- #### 2. 生成器的基本概念 - **生成器与序列的关系:** 从 Firebird 2 开始,`SEQUENCE` 是 `GENERATOR` 的别名。推荐在新代码中使用 `SEQUENCE` 语法,但两者功能相同,可以互换使用。 - **生成器的存储位置:** - 声明信息存储在系统表 `RDB$GENERATORS` 中。 - 值存储在数据库的特殊_pages_中,无法直接访问。 - 通过内置函数(如 `GEN_ID` 或 `NEXT VALUE FOR`)操作生成器。 - **系统表 `RDB$GENERATORS` 结构:** | 列名 | 类型 | 描述 | |-----------------------|----------------|--------------------------------| | `RDB$GENERATOR_NAME` | CHAR(31) | 生成器名称 | | `RDB$GENERATOR_ID` | SMALLINT | 生成器 ID(不是值) | | `RDB$SYSTEM_FLAG` | SMALLINT | 系统标志(系统生成器为 1) | | `RDB$DESCRIPTION` | BLOB subtype TEXT | 描述(Firebird 2.0 及以上) | **注意事项:** - `GENERATOR_ID` 是生成器的唯一标识符,不是生成器的值。 - 应用程序不应缓存 IDs 作为生成器的句柄。 - 系统标志为 1 的生成器由数据库内部使用,用户创建的生成器标志为 NULL 或 0。 --- #### 3. 生成器的 SQL 操作符 - **DDL(数据定义语言):** - `CREATE GENERATOR name;` 或 `CREATE SEQUENCE name;` - `SET GENERATOR name TO value;` 或 `ALTER SEQUENCE name RESTART WITH value;` - `DROP GENERATOR name;` 或 `DROP SEQUENCE name;` - **DML(数据操作语言):** - **客户端 SQL:** ```sql SELECT GEN_ID(GeneratorName, increment) FROM RDB$DATABASE; ``` 或(推荐 Firebird 2 及以上): ```sql SELECT NEXT VALUE FOR SequenceName FROM RDB$DATABASE; ``` - **PSQL(储存过程和触发器中):** ```sql intvar = GEN_ID(GeneratorName, increment); ``` 或: ```sql intvar = NEXT VALUE FOR SequenceName; ``` **注意事项:** - `NEXT VALUE FOR` 目前只支持步长为 1,未来版本会支持自定义步长。 - 在 PSQL 中不能直接创建或删除生成器,但 Firebird 1.5 及以上支持 `EXECUTE STATEMENT` 进行操作。 --- #### 4. 生成器的使用场景 - **生成唯一标识符:** 常用于主键或外键字段的自增值。例如: ```sql CREATE TABLE MyTable ( ID INTEGER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, Name VARCHAR(50) ); ``` - **替代自动增量字段:** Firebird 2.0 引入 `IDENTITY` 列属性,适合需要自增字段的场景。 - **多客户端环境下的线程安全:** 生成器确保在并发访问时生成唯一且递增的值。 - **数据库升级或迁移:** 可以通过 `SET GENERATOR` 设置初始值,避免数据冲突。 --- #### 5. 其他注意事项 - **生成器的值:** - 生成器的值不参与事务管理,会直接写入磁盘。 - 如果数据库重启,生成器会从上次记录的值继续递增。 - **生成器的命名:** - 名称长度不超过 31 个字符,不能包含特殊字符(除下划线)。 - 如果使用引号引用,名称可以包含其他字符,但不推荐。 - **性能优化:** - FIREBIRD 2.5 及以上版本支持缓存生成器值,减少 I/O 操作,提升性能。 --- #### 6. 附录 - **历史和版本:** 文档多次更新,支持最新版本的 Firebird 功能。 - **许可协议:** - 本文档采用 Public Documentation License 1.0 协议。 - 详情可从 [Firebird 官方网站](https://www.firebirdsql.org) 获取。 --- ### 总结 Firebird 的生成器是一个强大的工具,可以帮助用户轻松实现字段自增、唯一标识符生成等功能。通过本文,您可以了解生成器的基本概念、使用方法以及相关的 SQL 操作符,从而更好地在项目中应用生成器。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 16 页请下载阅读 -
文档评分
请文明评论,理性发言.