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 页请下载阅读 -
              
文档评分 
  












