發(fā)布時間:2015-12-01 11: 12: 05
Navicat for PostgreSQL 觸發(fā)函數(shù)可以使用 PL/pgSQL 創(chuàng)建及定義 PostgreSQL 觸發(fā)器。觸發(fā)函數(shù)是觸發(fā)器啟用函數(shù)的簡單方法,當在數(shù)據(jù)庫發(fā)生特定事件時觸發(fā)器定義運行操作,以PL/pgSQL 觸發(fā)函數(shù)作為觸發(fā)器參考。
觸發(fā)器的定義及關(guān)聯(lián)的觸發(fā)函數(shù)定義是兩個不同的東西,觸發(fā)器是以 CREATE TRIGGER 語句來定義,而觸發(fā)函數(shù)是以 CREATE FUNCTION 語句來定義。點擊 Navicat 主界面上的其他->觸發(fā)函數(shù),可打開觸發(fā)函數(shù)對象列表。
Navicat for PostgreSQL 最新版下載地址:http://www.whtianwei.cn/xiazai_postgresql.html
Navicat for PostgreSQL 觸發(fā)函數(shù)定義:
定義包括一個有效的 SQL 過程語句,這可以是一個簡單的語句,如 SELECT 或 INSERT,也可以是一個用 BEGIN 和END 寫的復合語句,復合語句可以包含聲明循環(huán)和其它控制結(jié)構(gòu)語句。
參數(shù):定義觸發(fā)函數(shù)參數(shù)。
返回類型模式和返回類型:觸發(fā)函數(shù)的返回類型。
Navicat for PostgreSQL 觸發(fā)函數(shù)高級屬性:
擁有者:觸發(fā)函數(shù)的擁有者,支持 PostgreSQL 8.0 或以上版本。
語言:函數(shù)實施的語言名。可能是 C、內(nèi)部或用戶定義過程語言名。為了向后兼容,名可能是用單引號括著。
揮發(fā)性:這些屬性可以查詢優(yōu)化器有關(guān)函數(shù)的性能。最多可指定一個選擇。如果這些沒有出現(xiàn),默認的假設(shè)是 VOLATILE。
● IMMUTABLE:函數(shù)不能修改數(shù)據(jù)庫,當給予相同的引數(shù)值時,總是返回相同的結(jié)果,也就是說,它不會做數(shù)據(jù)庫查找,或以其他方式使用信息時不直接出現(xiàn)在其引數(shù)列表。如果使用該項,任何函數(shù)調(diào)用的全部常數(shù)引數(shù)可以立即替換函數(shù)值。
● STABLE:函數(shù)不能修改數(shù)據(jù)庫,單一表掃描它會為相同的引數(shù)值返回相同的結(jié)果,但其結(jié)果可能會改變整個 SQL 語句,這是函數(shù)結(jié)果取決于數(shù)據(jù)庫查找、參數(shù)變量等適當選擇功能。此外,請注意函數(shù)的 current_timestamp 家族限制為穩(wěn)定,因為它們的值不會在事務(wù)中改變。
● VOLATILE:函數(shù)值能在單一表掃描中改變,因此沒有優(yōu)化。少數(shù)數(shù)據(jù)庫函數(shù)是易變的,例如 random()、 currval()、 timeofday()。但請注意,任何具有副作用的函數(shù)必須分類為易變,即使其結(jié)果是相當明確,防止調(diào)用不斷優(yōu)化,例如 setval()。
定義者安全性:指定函數(shù)運行時使用創(chuàng)建它的用戶權(quán)限。
返回集:表示函數(shù)將返回一組項目,而不是一個單一項目。
嚴格:表示每當函數(shù)的引數(shù)是 null 時,總是返回 null。如果此參數(shù)被指定,當有 null 引數(shù)時,函數(shù)不會運行,相反 null 結(jié)果會自動假定。
估計耗費:正數(shù)估計函數(shù)的運行耗費,使用 cpu_operator_cost 單位。如果函數(shù)返回一個集,這是每返回行的耗費。如果耗費沒有被指定,C 語言及內(nèi)部函數(shù)假定 1 單位,其他全部語言為 100 單位。較大的值導致策劃者應盡量避免比需要多的評估函數(shù),支持 PostgreSQL 8.2 或以上版本。
估計行:正數(shù)估計策劃者應預期函數(shù)返回的行數(shù),這只允許當函數(shù)被聲明為返回一個集,支持 PostgreSQL 8.2 或以上版本。
配置參數(shù):當函數(shù)輸入時設(shè)置到指定值的指定配置參數(shù),當函數(shù)離開時還原到以前的值,支持 PostgreSQL 8.2 或以上版本。
關(guān)于 Navicat for PostgreSQL 的更多相關(guān)教程,可參考 Navicat 官網(wǎng)。
展開閱讀全文
︾