FireBird数据库使用指南

上传人:文*** 文档编号:63929204 上传时间:2022-03-20 格式:DOC 页数:30 大小:289KB
收藏 版权申诉 举报 下载
FireBird数据库使用指南_第1页
第1页 / 共30页
FireBird数据库使用指南_第2页
第2页 / 共30页
FireBird数据库使用指南_第3页
第3页 / 共30页
资源描述:

《FireBird数据库使用指南》由会员分享,可在线阅读,更多相关《FireBird数据库使用指南(30页珍藏版)》请在装配图网上搜索。

1、文档供参考,可复制、编制,期待您的好评与关注! FireBird数据库使用指南一、FireBird数据库简介Firebird是一个跨平台的关系数据库系统,目前能够运行在Windows、linux和各种Unix操作系统上,提供了大部分SQL-99标准的功能。它既能作为多用户环境下的数据库服务器运行,也提供嵌入式数据库的实现。Firebird提供良好的并发性,高效的执行,强大的语言支持存储过程和触发器。从1981年起,它已经被许多商业公司运用于许多的产品系统中。 Firebird脱胎于Borland公司的开源版数据库Interbase6.0,是一个完全非商业化的产品,用C和C+开发。由于与inte

2、rbase的血缘关系,大部分interbase的开发工具可以直接应用到Firebird开发中。Firebird和原Borland的InterBase有着相同的血脉,其作为一个开源项目在2000年7月25日前遵循InterBase Public License V.1.0协议。Firebird使用Mozilla Public License v.1.1许可证发行。 Firebird特性介绍:firebird是一个全功能的,强大高效的,轻量级,免维护的数据库。它很容易让您从单用户,单数据库升级到企业级的应用。一个firebird数据库服务器能够管理多个独立的数据库,每一个数据库同时可支持多个客户端

3、连结。总之:它是一个开源的,强大在,可以自由使用的数据库(即使是商业上的使用) 关键特性:支持原子性,并发性,隔离性等概念。 MGA:支持事务的多个版本功能, 存储过程:使用PSQL(Procedure SQL),你可以创建强大的存储过程来处理服务上的所有数据,你可以使用select Stored Procedure的形式,使用存储过程,以得到一个虚拟的表结构的结果。这样的话,你就可以很容易的在报表中使用它。 事件:存储过程和触发器可以引发事件,这个事件可以被客户端程序监听到 生成子:生成子也称为序列,它可以很容易的实现自动增加的字段。它是一个INT64的长度,因此,它可以用在一个事务中,也可

4、以用在其它很多方面。只读数据库:我们可以把数据库存放在CD中,形成一个只读数据库。如果我们的应用程序也在光盘上,再加上嵌入式的FB数据库服务器,便可以得到一个无与伦比的 CDLIVE(即只用光盘就可以运行起来)应用。 全事务控制:一个客户端可以存在多个并发的事务。并且每一个事务都可以独立的进行控制,两段提交功能可以保证数据库的一致性。锁优化机制也支持多个事务的保存点。在线备份:不需要停止数据库即可进行备份,一个备份进程产生一个数据库当前的快照。因此,用户可以在备份期间持续的工作,即实现24x7(每天24小时,每周7天)的操作。 触发器:每一个表可以有多个并发的行级触发器,可以在插入前,插入后,

5、更新前,更新后,删除前,删除后进行触发。我们可以在触发器中写入PSQL语句,默认值,产生异常,firebird现在支持统一触发器,即可以一个触发器中,一次性管理插入,更新,删除的操作。 扩展函数:可以使用C语言,C+,DELPHI写UDF,使用UDF(用户定义函数库)可以很容易的挂入数据库引擎中以扩展我们需要的功能字符集:Firebird实现了很多国际标准的字符集,包括Unicode。 SQL标准兼容:Firebird 实现了全部SQL92所要求的功能,实现了SQL99最常用的的要求。包括但不限于FULL/LEFT/RIGHT OUTER JOIN , UNION, DISTINCT , 子查

6、询 (IN, EXISTS),内部函数 (AVG, SUM, MIN, MAX, COALESCE, CASE, .), 主键,外键,唯一索引以及所有通用的数据类型。 Firebird还实现了域,字段级别的约束,视图,异常,规则和权限管理,更多的详细信息,请参考Firebird发布通知和参考手册。 硬件需求:Firebird可以工作最常见的硬件环境中,甚至非常差的硬件中,也能很好的工作,当然,硬件的要求依赖于你想做什么,例如你有多个并发用户等等。 有效的平台支持Firebrid在常见的平台上都可运行,如Linux和Windows(包括Windows终端服务器)其它支持的平台包括(MACOS(苹

7、果机),Solaris及HP-UX)把数据库从一个平台转到另一个平台,非常的容易,只要备份数据库,然后,再到另一个平台上恢复即可可连接性Firebird 支持一系列的连接方法,目前,可以通过原生的DELPHI,C+组件连接,也可以通过ODBC,JDBC,PHP,OLEDB,DbExpress进行连接。原生的联连提供了直接调用Firebird的API函数库(fbclient.dll/.so)进行调用的能力。物理限制Firebird支持非常巨大的数据库,数据库可以分成多个物理文件。每个文件的大小依赖于操作系统的限制。当前一个数据库文件最大的理论限制是64T(即64000G),因此,常见的限制通常是

8、操作系统的限制以及磁盘空间的限制。 服务器引擎版本当前有三个服务器版本。 标准服务器:每一个客户连接将引发一个服务器进程(支持多处理器) 超级服务器:一相服务器进程模块管理所有的客户端连接,当前不支持多处理器。 嵌入服务器:整个服务器引擎就是一个动态库,只支持本地通过IO进行调用。 但是,所有的服务器都使用一种数据库格式,因此,你可以很方便的在不同的引擎之间共享数据库文件的数据。协议Firebird协议使用IPL(interbase public license)和IDPL(Initial Developers Public License),这种协议类似于Mozilla协议。你可以完全的自由

9、使用并且可以自由的布署在你的客户应用上。你不需要公开你的源代码。当然,如果你修改和数据库引擎,你应该公布源代码。 工具有很多的工具支持Firebird.包括自由的,免费的和商业的。包括开发工具,管理工具,诊断工具等等。 支持和资源在Firebird的官方网站上(www.firebirdsql.org),有很多关于这个项目的有用的信息。IPPhonex公司也提供专业的商业支持。在他们网站上,也有很多有用的专业信息及常见问题的解答等。 团队Firebird有一系列的用户支持的团队和新闻组,您可以寻求在线支持。您可以查看项目主页上的全部新闻组列表。 历史Firebird基于开源Interbase6.

10、0,它是Borland公司年发布的一个开源版本。关于Interbase的最早历史可以追溯到1984年,因此,这个数据库已经有20岁了。 特点1、Firebird是一个真正的关系数据库,支持存储过程、视图、触发器、事务等大型关系数据库的所有特性; 2、Firebird支持SQL92的绝大部分命令,并且支持大部分SQL99命令,新版Firebird 2.0对SQL99的支持更完整; 3、Firebird源码基于成熟的商业数据库Interbase,有良好的稳定性,与Interbase有良好的兼容性; 4、不用考虑授权费用(免费),不用当心将来有一天你或你的客户因为使用盗版而被数据库开发商告上法庭;

11、5、发布简易,安装文件只有几M,且高度可定制,客户端的分发也很简单,只需一个DLL文件; 6、Firebird的一嵌入式服务器版本,不用安装,直接运行,基于单机开发首选; 7、Firebird的运行效率非常高;8、具备高度可移植性,可在Linux,Unix,MacOS,Windows,Solaris系统下运行,而且数据库格式完全一样,不用修改; 9、开发环境支持良好,Delphi,C+Builder不用通过ODBC连接,直接用原生开发接口开发基于Firebird的程序。 二、FireBird数据库的安装架構firebird 資料庫軟體有三種套件,並而支援不同作業平台(windows系列,lin

12、ux,freebsd等.)1. Super Server-無法直接存取資料庫檔案,必須透過socket來和伺服器溝通 2. Classic-直接存取資料庫的檔案,多個程式可以同時存取一個檔案,有點像vfp,dbase 3. embedded-專為一些小型系統的嵌入式資料庫 (pda)下載及安裝主網站:Download-Firebird relational database直接點兩下就可以安裝,請照步驟,根據自己的需求來安裝預設安裝路徑windows:c:program filesfirebirdfirebird_1_5linux:/opt/firebird 兩個作業系統下的目錄結構非常像根目

13、錄下:firebird.conf-設定檔 aliases.conf -別名檔friebird.log -記錄檔SYSDBA.password -linux才有,管理者的名稱及密碼在裏面,windows則預設:名稱:sysdba,密碼:masterkeywindows直接使用security.fdb來存sysdba的密碼注意:使用者名稱不分大小寫,但密碼有分目錄/bin:則是一些必要的主要及工具程式設定 firebird 主要的設定檔firebird.conf 預設tcp/ip會啟動port:3050你可以使用telnet ip 3050來測試aliases.conf設定資料庫的別名資料庫連線時

14、一般要指定路徑,有時路徑太長時你可以指定,在aliases.conf中使用別名來存取它是位於你安裝firebird的根目錄,以下為內建範例# 別名 = 原始路徑employee.fdb = /opt/firebird/examples/employee.fdb其中#為註解,而windows及linux的路徑是有所不同:# fbdb1 在Windows伺服器:fbdb1 = c:FirebirdsampleEmployee.fdb# fbdb2 在Linux伺服器:fbdb2 = /opt/databases/killergames.fdb資料庫執行時可以編輯這個檔案,不需要重新啟動伺服器連線別

15、名的方式:Server_name:aliasname使用者管理(consloe介面)1.預設管理者名稱sysdba,密碼masterkey2.密碼檔security.fdb,位於firebird安裝目錄下3.管理程式gsec 安裝目錄下bin4.密碼長度限制在8碼用法:本地主機(資料庫server在本台電腦)gsec -user sysdba -password options遠端主機(資料庫server在別台電腦)gsec -user sysdba -password -database gsec命令display顯示所有使用者display 顯示某使用者add -pw options新增使

16、用者modify options修改使用者delete 刪除使用者help求助?同上quit離開gsecz顯示版本options-password 管理者的密碼-user 使用者名稱-pw 使用者密碼-fname 英文名字有,三個部份-mname -lname 範例有兩種方式1.直接下在命令列-2.進入互動式的命令列-額外的命令新增使用者gsec -user sysdba -password masterkey gsec add elvis -pw elvis -fname elvis -lnmae presley 修改密碼gsec modify elvis -pw chunk 修改sysdb

17、a密碼gsec -user sysdba -password masterkey -modify sysdba -pw mykey37修改遠端伺服器linux的sysdba密碼gsec -user sysdba -password masterkey -database harry:/opt/firebird/security.fbd -modify sysdba -pw hamburg 修改遠端伺服器windows的sysdba密碼gsec -user sysdba -password masterkey -database sally:c:Program filesFirebirdsecu

18、rity.fdb -modify sysdba -pw hannover修改遠端伺服器使用tcp port 3050gsec -user sysdba -password masterkey -database jack/3050:/opt/firebird/security.fdb -modify sysdba -pw londo修改遠端windows伺服器ip( a.b.c.d)使用tcp port 3050 gsec -user sysdba -password masterkey -database a.b.c.d/3050:c:program filesfirebirdfirebir

19、d_1_5security.fdb -modiyf sysdba -pw londo 刪除本地使用者gsec -user sysdba -password masterkey -delete joe 資料庫管理(console)程式isql位於安裝目錄下的bin以下是一個操作範例:c:Program filesfirebirdfirebird_1_5binisql -user sysdba -password masterkey Use CONNECT or CREATE DATABASE to specify a databaseSQL connect test;Database: test

20、, User: sysdbaSQL show table; COUNTRY CUSTOMER DEPARTMENT EMPLOYEE EMPLOYEE_PROJECT JOB PHONE_LIST PROJECT PROJ_DEPT_BUDGET SALARY_HISTORY SALESSQL select * from country ;COUNTRY CURRENCY= =USA DollarEngland PoundCanada CdnDlrSQLquit;建立資料庫1.建立資料庫create database 2.建立資料表格create table (sql指令)3.刪除資枓表格dr

21、op table (sql指令)4.查詢資料庫中所含表格 show table 5.查詢表格中的結構 show table 表格名稱6.新增,刪除,更新(insert,delete,update)均為sql指令7.SQL命令交付,在新增或刪除時,資料庫並未直接變更,要使用sql指命commit 或commit work來更新isql -user sysdba -password masterkeyUse CONNECT or CREATE DATABASE to specify a databaseSQL create database c:temptest.fdb;SQL create ta

22、ble abc (name char(12),age numeric(3);SQL show table friend ;FIRSTNAME CHAR(15) NullableLASTNAME CHAR(20) NullableCITY CHAR(15) NullableSTATE CHAR(2) NullableAGE INTEGER NullableSQL insert into abc (name ,age) values( cschen,34);SQL select * from abc;NAME AGE= =cschen 34 以上的操作主要是sql指令命令的結尾必需使用;, 如果沒

23、有使用;提示會由SQL變為CON,告訴你延續之前的命令SQLcreate table friend CON(FIRSTNAME CHAR(13),CON LASTNAME CHAR(40),CON STATE CHAR(2),CON AGE INTEGER );同下SQLcreate table friend (FIRSTNAME CHAR(13),LASTNAME CHAR(40),STATE CHAR(2),AGE INTEGER);每一個資料庫有一個特殊資料庫-系統資料庫,包含了使用者權限等.SQL show system; RDB$CHARACTER_SETS RDB$CHECK_CO

24、NSTRAINTS RDB$COLLATIONS RDB$DATABASE RDB$DEPENDENCIES RDB$EXCEPTIONS RDB$FIELDS RDB$FIELD_DIMENSIONS . .使用者權限1.GRANT 授予使用者權限 GRANT 權限 ON 物件 TO 對象 with grant option2.REVOKE 撤消使用者權限 REVOKE 權限 ON 物件 FROM 對象權限:SELECT ,INSERT ,UPDATE,DELETE, ALL物件:TABLE,VIEW對象:使用者,PUBLIC(代表全部)with grant option 讓該名使用者有設定

25、別的使用者的權限 *因為isql無法輸入中文,因此無法使用在中文輸入資料*在linux下由於可能會有同名的isql(unixODBC套件),而linux安裝在/opt/firebird,因此必須使用絕對路徑來執行,另資料庫的管理者名稱可以不固定,至於密碼在安裝時會自動產生在檔案SYSDBA.password中連線方式(檔案/tcpip)程式支援兩種連線方式1.使用完整路徑連線 c:abcd.2.使用tcpip連線,在路徑前加主機的名稱或IP 主機:c:abcd.我們可以根據切換這兩種windows 下的路徑如有空白,有時必須使用 將路徑框起來才可以用資料庫/使用者管理(gui) 我有試過幾個免

26、費的windows端的軟體 選擇ibeasy+: 非常容易管理,必須有資料庫的觀念另外可配合marathon使用ibeasy+使用者管理介面:server-users management(輸入管理者的名稱及密碼,進入下一個視窗)(你就可以管理你的使用者)設定odbc 在firebird-download -odbc下載後安裝odbc Database 1.完整路徑-c:databaseabc.fdb2.tcp/ip-ip:完整路徑(127.0.0.1:c:databaseabc.fdb)資料庫的安全(備份/回存)(console)GBAK:命令列工具,命令有兩個狀態,備份/回存(-b / -

27、c) 語法 gbak -user -password 1.備份gbak -b 是你要備份的資料庫來源, 是備份的目的地檔名.一般的延伸附檔名 是 .fbk .只有SYSDBA 或是資料庫的擁有者可以執行備份工作. 對於多個檔案的資料庫,只需指定第一個檔案的名稱來當資料庫的名稱. 2.回存 gbak -c 是先前備份的檔案而 是資料庫的名稱選項 (中括號內的是非必要,也就是命令可以使用中括號前的縮寫,或是含中括號內為長參數)參數 說明 功能-backup_database 備份 備份 -buffers Set cache size for restored database 回存 -create

28、_database 回存 (必要參數) 回存 -convert 轉換外部表格到內部表格s 備份 -expand 建立一個非壓縮的備份 備份 -factor n 磁帶機的區塊系數 備份 -garbage collect 備份時不清空已刪除的資料 備份 -inactive 所有的索引將回存為INACTIVE 回存 -ignore 備份時不做checksum錯誤檢查 備份 -kill 在不建立定義備份中的shadows 回存 -limbo 備份時忽略limbo transactions 備份 -metadata只備份資料表格的metadata (schema).不備份資料備份-mode read_w

29、rite 回存一個 可讀/寫的資料庫(預設)回存-mode read_only 回存一個唯讀寫資料庫 回存 -no_validity 不回存validity constraints.也就是回存資料不回存 constraints 回存 -nt 非相容性的格式(只使用在相同作業平台,及firebird版本)備份-one_at_a_time 一次回存一個表格.你可以分別分次回存表格回存 -old_descriptions 舊的格式 備份 -page_size 設定page size of new database. 可以是 1024, 2048, 4096, 8192.預設1024. 回存 -pas

30、sword 資料庫的密碼 -replace_database 回存在一個存在的資料庫上.只能在擁有本資料庫的使用者可以操作 這是覆寫,不要執行在使用中的資料庫! 回存 -role 使用某一群組(role )來連線 -service :service_mgr 備份: 建立,使用服務管理.回存: 回存,使用服務管理.-transportable 建立可轉移的備份(不同作業系統及firebird版本) 備份 -user 資料庫使用者的名字-use_all_space 正常,回存,資料庫頁會填滿80% 唯讀才會寫回100%(因為不用預留修改的空間) 回存 -verbose 顯示所有gbak執行的詳細動

31、作-y 重導所有的輸出到一個檔案 .注意:命令執行之前不可以存在檔名! -y suppress_output Quiet mode -z 顯示版本範例:正常的備份:gbak -v -t -user SYSDBA -password masterkey dbserver:/db/warehouse.fdb c:backupswarehouse.fbk備份並記錄所有備份時的輸出訊息:gbak -v -t -user SYSDBA -password masterkey -y c:backupswarehouse.log dbserver:/db/warehouse.fdb c:backupswar

32、ehouse.fbk正常的回存:gbak -c -v -user SYSDBA -password masterkey c:backupswarehouse.fbk dbserver:/db/warehouse2.fdb回存到一個已存在的資料庫:gbak -c -r -v -user SYSDBA -password masterkey c:backupswarehouse.fbk dbserver:/db/warehouse.fdb回存一個唯讀的資料庫:gbak -c -v -mode read_only -use_all_space -user SYSDBA -password maste

33、rkey c:backupswarehouse.fbk c:fileswarehousedb.fdb多重檔案備份當資料庫很大時,要備份有點困難,因此我們將資料庫備份成許多小的檔案,如此儲存時比較方便 備份語法:gbak options . 注意: 不要指定最後一個檔案的大小.因我們不一定知道最後一個檔案需要多少空間來儲存,所以它將自動依據大小來儲存.至於其它檔案的大小可以是 bytes (8192), kilbytes (1024k), megabytes (5m), 或 gigabytes (2g) 回存語法:gbak -c options . 回存到一個多個檔案的資料庫有些系統的檔案系統有

34、限制,或是為了效能的因素,因此單一資料庫,可分成多個小的資料庫gbak -c options . 注意:不要指定最後資料庫的大小.它可以無限制的依據回存的檔案來變更大小.Size can be given in bytes (8192), kilbytes (1024k), megabytes (5m), or gigabytes (2g) 由備份多個檔案回存到多個檔案的資料庫:gbak -c options . . 資料庫安全(備份/ 回存)(gui)(ibeasy+,參考hlp檔)選項 (Database | Save Database)你可以簡單複製資料庫檔(如一般的指令copy) 但是

35、無法確定資料庫的安全.優點: 改善效能經由排除不完整的(eliminating incomplete)交易和過期的記錄 減少資料庫的大小-移除刪除的記錄 獨立的備份和回存的功能和作業系統無關 執行時必要參數: 資料庫全名 備份檔案的名稱,可包含大小等特性. The options which must be applied at the time of back up- Checksums 檢查資料的完整. - End transactions - Metadata only 只存結構不存資料. - Eliminate garbage 予許釋放舊版本記錄的空間. - Old data form

36、at- Transportable database 可以回存資料庫到不同的作業系統. - Convert to tables 轉換外部檔案到內部表格. 選項: (Database | Restore Database)執行這個操作,必須是這個資料庫的擁有者或是有執行管理系統的權限: SYSDBA.一個資料備份的資料庫可以回存執行時必要參數: 備份檔案的名稱 資料庫全名 可用的參數 - Page size 變更資料庫每頁的大小,可以改善效能.說實在,所有資料庫在一頁中會比較快.- Rebuild Indices. 重建索引- Create database image Allow the re

37、covery of a database in case of disk crash. - Validity conditions Allow when data are not valid any more, following for example a modification of the integrity constraints, to be unaware of the integrity constraints. - Commit after each table - Replace database In this case, the database must be clo

38、sed beforehand, and no user must be connected. - Create a new database This option is exclusive compared to the preceding option - Use all space to recreate the database. By default, at the time of the restoration of a database, the pages are filled out to 80%. This option makes it possible to fill

39、them to 100%.資料型態名稱 大小 範圍 /精度 描述 Blob 不固定blob段大小限於64K 動態變長度二進位類型,用於存放大量資料的情況,如圖片、音樂、視頻、多媒體等。其基本結構單位為段,它的子類型描述了存儲資料的詳細資訊 Boolean 16位 TrueFalseUnkown 代表了邏輯上的(真、假、不確定)與Dialect無關。 Char(N) n個字元 1到32767個位元組。雙字元集除2 固定長度的字元或字串 Date 64位 從西元後100年一月一日到32768年二月29日 日期類型。只有年月日,不帶時間 Decimal(P,S) 變數(16、32或64位) 精度p從

40、1到18:指定數字的總長度;標度s從0到18:指定小數點後的位數。 定點小數。例如decimal(5,3)可以存儲的數位形式為:pp.sss Double Precision 64位 從2.22510的-308 次方到1.79710的308次方 IEEE雙精度浮點數,15位長度 Float 32位 從1.17510的-38 次方到3.4020的38次方 IEEE單精確度浮點數,7位長度 Integer 32位 從-2147483648到2147483647 整數 Numeric(P,S) 變長(16、32或64位) 精度p從1到18:指定數字的總長度;標度s從0到18:指定小數點後的位數。 定

41、點小數。例如decimal(10,3)可以存儲的數位形式為:ppppppp.sss Smallint 16位 從-32768到32767 短整數 Time 64位 從0:00 AM到23:59.9999 PM 時間類型 Timestamp 64位 從西元後100年一月一日到32768年二月29日 帶有時間的日期類型 Varchar(N) n個字元 1到32767個位元組。字元集決定了其能容納的最大字元數 #Blobblob sub_type segment 這是一個特有的資料型態,是用於儲存比較大量的資料,類似其它資料庫的text或是memo資料型態,在定義時有兩個附加參數是sub_type,

42、 segmentsub_type是blob的資料類型,以下是它的types.h中的定義定義說明TYPE (TEXT, 1,nam_f_sub_type)TYPE (BLR, 2,nam_f_sub_type)TYPE (ACL, 3,nam_f_sub_type)TYPE (RANGES, 4,nam_f_sub_type)TYPE (SUMMARY, 5,nam_f_sub_type)TYPE (FORMAT, 6,nam_f_sub_type)TYPE (TRANSACTION_DESCRIPTION, 7,nam_f_sub_type)TYPE (EXTERNAL_FILE_DESCRI

43、PTION, 8,nam_f_sub_type)文字,類似memo,而資料型態varchar限制 32K二位元資料(圖片,影音檔等)1,2是我們常用的,其它的很少使用generator(計數器)計數器可以我們幫助產生循序的數字,你可以將其看成如一個公共變數,使用gen_id(generator名稱,step)來取得一個值並加stepcreate generator my_gen num=gen_id(my_gen,1)則num問題如果純粹使用generator來填入,如果是uniqe或primary key,當generator最大值是264(18446744073709551616) 如果超

44、過會重回到0由於generator的最大值264 是很大數字要產生重複的機率很小要不要使用日期來配合產生?如果配合日期則會產生重複的機率會減少(發票,傳票等)年月日+流水號20040303004而generator 只要產生流水號,但是流水號每天都是從1開始,並且一般會限制數字的寬度如四位數或三位數如此造成重複性會增加目前資料庫並無法處理這個問題,你必須自己設計一個表格來儲存這個值,配合sql指令來取得最後的值(建議:不要浪費時間在使用在資料庫端的解決方法)填入的欄位要字串或是數字?如果是單獨使用generator,最好是用數字的格式比較好#注意:integer只有32位元範例:自動展示cre

45、ate generator test_gen ;CREATE TABLE test1 (serial_no char(3) not null primary key,name char(15);建立觸發來自動取得ID(new.欄位名稱 ,這個變數是可以被sql指令時自動引用)set term !;create trigger test for test1 active before insert asbegin new.serial_no=cast(gen_id(test_gen,1) as char(3);end ! set term ; !#針對本身欄位變更方法:觸發包含了三種sql指令及

46、二種狀態執行前/執行後在insert的執行前,所有的插入到被觸發的表格的欄位,你可以使用 new.欄位名稱來存取,只要變更該值就可以自動變更新增到表格中的欄位值#在建立trigger 時由於trigger中的;(分號)會混淆結束符號,因此使用sql指令或在isql中新增trigger請變更其結尾符號,是set term 結尾符號,預設的結尾符號;,因此做完要復原set term ;!流水號每日重置流水號使用表格欄位來記錄日期,檢查若日期不同則寫入新日期並將generator歸零(set generator 名稱 to 0),但無法使用在儲存函式中在新增之前觸發這個功能,比上述更簡單(尚未測試)

47、create trigger test2 for test active before insert as declare variable temp_date date;declare variable serial_no char(3);begin if current_date=t_date then #取得流水號 serial_no=cast(gen_id(generator名稱,1) as char(3); else #將流水號置為0,使用相減 =GEN_ID(My_Generator, -GEN_ID(My_Generator) #取得流水號 endif end#current_d

48、ateselect current_date from rdb$database儲存函式或觸發呼叫其它的儲存函式execute procedure 名稱(變數1,變數2.) RETURNING_VALUES (變數,變數2.)最簡單的呼叫(不傳值,也不傳回值)直接執行 EXECUTE PROCEDURE 名稱測試函式的執行或 GENERATOR的結果1.建立一個GENERATORCREATE GENERATOR TESTGEN2.建立一個儲存函式(只是將GENERATOR加一)create procedure TEST asDECLARE VARIABLE MY FLOAT;BEGINMY=G

49、EN_ID(TESTGEN,1);END3.直接執行命令EXECUTE TEST 4.查詢GENERATOR是不是變為2變數函式中自己宣告的區域變數1.直接引用-不需任何前置符號2.用在sql語法中-必須前置:記錄使用者CURRENT_USER 和 CURRENT_ROLE時間變數current_time,current_date,current_timestampudf自定函式的內建函式預設有內建函式放在在安裝目錄下的udf中含有的函式資訊在fbudf.sql、ib_udf.sql,但真正函式是在fbudf.dll、ib_udf.dll在firebird中使用者自定函式,和其它的sql-se

50、rver有很大的不同在firebird中udf一般是以c或c+寫成函式,然後編譯成為模組1.windows- .dll檔2.linux - .so 檔再來將其放在安裝目錄的UDF目錄下,一般會將其宣告檔放在同一目錄下,如果不是放在預設的目錄下,你必須在firebird的環境檔中設定,但是會有安全的問題.如果你不會也不想寫自定函式,但是想要用別人寫好的函式要使用宣告命令declare external function 其語法如下:declare external function 名稱傳入的變數型態列表returns 回傳變數型態 FREE_ITentry_point 函式名稱 模組名稱;如果

51、你不知道有那些函式可以使用,可以參考UDF目錄下的.sql以下是完整抄自ib_udf.sqlDECLARE EXTERNAL FUNCTION ltrim CSTRING(255) RETURNS CSTRING(255) FREE_IT ENTRY_POINT IB_UDF_ltrim MODULE_NAME ib_udf;你必須在isql連線資料庫完畢後執行上述的命令(或其它管理程式),則該函式就會隨資料庫可以被呼叫使用,FREE_IT是在函式傳回值之後清掉所配置的記憶體.個人認為目前client所提供的函式遠多於server端,因此除非必要否則儘量使用client端的函式#ibeasy+

52、不提供UDF的管理#marthon提供安全性(建立多個資料庫備份檔)create shadow 一旦使用上述命令則會建立一個同步的資料庫在其它的儲存設備上,這可以保障當資料庫邏輯或實體的儲存介面損壞時,有一個備份的資料庫可以即時取代重建索引alter index 索引名稱 inactive alter index 索引名稱 active 上述命令可以用在重建索引,或是資料庫回存時想要加速其執行速度,不要回存時邊回存邊建立索引,先執行inactive則回存時索引會失去作用,等資料庫回存完畢時再執行active的動作,則會重建索引,當然只有在沒有人使用該資料庫時才可以使用三、FireBird.co

53、nf配置文件常用参数 1.RootDirectory 写上Firebird服务器的安装路径 如果不对FbServer服务是企动会出错的.2.DatabaseAcces 指的是访问Firebird数据库的路径,可以用相对路径,也可以用绝对路径.如果是访问整个服务器的磁盘空间写:DatabaseAcces=Full3.ExternalFileAccess 外部表文件存放的路径.缺省值是non,也就是不允许你建外部表文件.如可以把外部表文件保存在C:ExternalTables, 可以这样设定:ExternalFileAccess=C:ExternalTables.4.UdfAccess 外部涵数的

54、位置,如不指定,默认是:Restrict UDF,也就是数据服务器安装目录下的UDF目录.如我们也把外部函数放到c:udf ,可以这样写 UdfAccess =c:udf5 TempDirectories 临时目录的路径,可以指定其大小 如TempDirectories= userdata 50000000就表示在firebird的根目录的userdata目录限定一个50MB大小目录作临时目录用.默认的是以FIREBIRD_TMP,TMP等系统变量指定的值.6 DefaultDbCachePages 指定数据络存的页数,如不指定SuperServer 模式默认是2048页.classic 模式

55、默认是75页.相当于 gfix -buffer XXX指信令。一般设个10000页较好。对服务器性能提高很重要。7 SortMemBlockSize 查询是索引排序的大小,以Byte为单位 默认为1M.如果表的记录数可以把他加大些。8 SortMemUpperLimit 索引排序内存大小限制,如设定SortMemUpperLimit=8388608(8MB)那么就不能起过个大小。对superserver指全部,对classic是针对每client.(建议以8M为好)如不高定这个值,对服务器性能有影响。9 OldParameterOrdering 默认为0,如果是以1.5新开发应用程序只能写0.

56、10 CompleteBooleanEvaluation 对于条件表达式(and 与or 运算)是短路判断还是全部判定。系统默认是短路(0),这样可以加快过程与触发器的运行速度。11 DeadlockTimeout 单位为秒。当两个客户端同时修改一个对象发生冲空时,而让其等待不报告错误的最大时间。默认是10秒。太低很容易使很多修改不成功。太高又占资源。12 MaxUnflushedWrites 在win服务器平台,对于关闭强制写选项时,这个很有少。为什么很多人用异步写方式出现数据损坏的Bug,就是没有设定这个值。可以设100页,当有100页数据时系统就会提交到磁盘。13 MaxUnflushedWriteTime 在win服务器平台,对于关闭强制写选项时,这个很有少。为什么很多人用异步写方式出现数据损坏的Bug,就是没有设定这个值,以秒为单位可设5少。当与12有冲空时,以13为准进行处理。14 BugcheckAbort 15 ConnectionTimeout 客户端连接超时设定16 DummyPacketInterval 单位是秒。客户端如不动,需要保持连接的时间。TCP/IP连接不能用。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!