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