FireBird数据库以它的短小而精悍著称,其性能可以和大型的MSSQL SERVER、Oracle相媲美,具有其它优秀数据库的一些特点,而它自身又有一些它的特点,因此在设计数据库时也有一些和其它数据库的技巧。
一个表一般要具备一个自增长列ID,其它数据库自增长列只要定义一下就行了,而Firebird数据库要自己定义,首先,定义一个Integer类型的列F_Id,再创建一个生成器,Genarator,
Create Generator Gen_DataId;
Set Generator Gen_DataId to 0;
这样这个生成器以初值0作为增长点,还需要创建一个触发器
Create Trigger TB_TestData_BI0 For TB_TestData
Active Before Insert Position 0
as
begin
if (New.F_Id is Null) then
New.F_Id=Gen_id(Gen_DataId,1);
end
这样,这个触发器就能实现在新增数据时自动加1的添加值,一般不以这个ID作为主键,而把它定义为唯一键Unique Key,而再创建一个有意义的字段,比如F_DataNo作为主键,这样在以后数据大时可以做为查询的参照,加快查询速度,而不把这个关键字段定义为唯一键Unique Key,因为在另外一个表以这个字段为外键的字段必须要求这个字段为主键, 当然,如果是数据量小,不考虑数据库性能,也可以把F_Id定义为主键,而把F_DataNo定义为唯一键,这种方式在数据量大时,如果要以这个字段来搜索数据的话,可能速度没有定义为主键快,不过这只是我的一个猜想,还没有测试。