Firebird Cookbook 3:表管理
Firebird沒有如同MySQL那樣的表克隆能力,如果想要?jiǎng)?chuàng)建一個(gè)元信息一致的表,只能直接復(fù)制DDL。此外,F(xiàn)irebird也不支持客戶端在會(huì)話中創(chuàng)建臨時(shí)表。但是,F(xiàn)irebird提供了全局臨時(shí)表功能。
4.1??全局臨時(shí)表
全局臨時(shí)表的元信息是持久化的,而數(shù)據(jù)則可以局限于當(dāng)前事務(wù)或連接:
CREATE?GLOBAL?TEMPORARY?TABLE?GTT_STUDENTS?(...)?ON?COMMIT?DELETE?/?PRESEVE?ROWS;
DELETE和PRESERVE分別對(duì)應(yīng)事務(wù)臨時(shí)表和連接臨時(shí)表。全局臨時(shí)表絕大部分特性和普通表是一樣的,除了:
(1)臨時(shí)表和普通表不能互相引用。
(2)臨時(shí)表之間只能引用同類型的表(事務(wù)引用事務(wù),連接引用連接)。
(3)臨時(shí)表在生命終止、銷毀數(shù)據(jù)的時(shí)候不會(huì)觸發(fā)BEFORE/AFTER型觸發(fā)器。
4.2??存儲(chǔ)查詢數(shù)據(jù)
可以在INSERT中使用SELECT子語句來實(shí)現(xiàn):
INSERT?INTO?STUDENTS?(SID,?SNAME)?SELECT?SID,?SNAME?FROM?TEMP;
4.3??備份
bin目錄下的gbak工具可以提供數(shù)據(jù)備份功能。
#??創(chuàng)建備份
gbak?/path/to/db/SOME.FDB?/path/to/backup/BACKUP.BAK?-USER?user_name?-PAS?pwd
?
#??恢復(fù)數(shù)據(jù)
gbak?/path/to/backup/BACKUP.BAK?/path/to/db/RESTORE.FDB?-C?-USER?user_name?-PAS?pwd
其它一些開關(guān)包括:
(1)-M:只備份、恢復(fù)元信息
(2)-NOD:恢復(fù)數(shù)據(jù)過程中不調(diào)用觸發(fā)器
(3)-REP:覆蓋已經(jīng)存在的文件