第 10 章 觸發程式

2021-08-01 08:15:33 字數 1369 閱讀 5192

觸發程式是使用者定義在資料表上的一類由事件驅動的特殊過程。一旦定義,任何使用者對錶的增、刪、改操作均由伺服器自動啟用相應的觸發程式。觸發程式是乙個功能強大的工具,可以使每個站點在有資料修改時自動強制執行其業務規則。通過觸發程式,可以使多個不同的使用者能夠在保持資料完整性和一致性的良好環境下進行修改操作。

觸發程式是一種特殊的儲存過程,它的執行不是由程式呼叫,也不是手工氣動,而是通過事件進行觸發來被執行的。觸發程式經常用於加強資料的完整性約束和業務規則等。觸發程式類似約束,但比約束更靈活,具有更精細和更強大的資料控制能力。觸發程式的優點如下:

(1)觸發程式的執行是自動的。當對觸發程式相關表的資料做出相應的修改後立即執行。

(2)觸發程式可以通過資料庫中相關的表進行層疊修改另外的表。

(3)觸發程式可以實施比foreign key約束、check約束更為複雜的檢查和操作。

觸發程式建立後可以通過兩種方法檢視觸發程式的定義、狀態等資訊。檢視的方法分別為show triggers和在系統表triggers中進行檢視。

使用show triggers語句檢視觸發程式的資訊

show triggers [from db_name] [like expr]

其中,like expr待匹配的表示式(expr)會與觸發程式定義時所在的表的名稱相比較,而不與觸發程式的名稱相比較。

在系統表triggers中檢視觸發程式的資訊

已定義好的觸發程式的資訊都儲存在information_schema庫中的triggers表中,可以通過檢視該表中的資訊獲取某個觸發程式的資訊。

查詢語法如下:select * from information_schema.triggers

where condition

mysql刪除觸發程式的語法如下:

drop [if exists] trigger_name

下面對刪除觸發程式各部分語法進行詳細說明:

(1)schema 表示資料庫名稱,schema_name是可選的,如果schema_name省略不寫,將從當前資料庫中刪除觸發程式。

(2)trigger_name是要刪除的觸發程式的名稱。

(3)if exists用來阻止不存在的觸發程式被刪除的錯誤。如果待刪除的觸發程式不存在,系統會出現觸發程式不存在的提示資訊。

在觸發程式的執行過程中,mysql處理錯誤的方式有哪些 ?

如果before觸發程式失敗,不執行相應行的操作。只有before觸發程式和行操作均成功執行,才執行after觸發程式,如果before和after觸發程式的執行過程中出現錯誤,將會導致呼叫觸發程式的整個語句的失敗。

mysql中觸發程式中能不能對本表進行insert、update、delete操作?

不能,以免遞迴迴圈被觸發。

第10章 函式

定義函式的格式 name command list 呼叫函式的格式 name 省略括號 檢視到所宣告的函式定義 declare f name 取消定義的函式,可以使用unset命令 unset name 案例 bin bash 定義函式printmsg用來輸出資訊到終端螢幕,該函式至少需要兩個引數 ...

第10章第8題

mylist.h ifndef mylist h define mylist h include const int len 10 class mylist endif void show double mid 這個函式用於簡單的顯示乙個double mylist.cxx include mylis...

第8章 觸發器

重點一 觸發器 1.定義 觸發器是在對錶或檢視進行插入 更新或刪除操作是自動執行的儲存過程,有事務的特徵,可以跨表操作。2.分類 1 after觸發器 只能定義在表上 insert觸發器 update觸發器 delete觸發器 2 insert of觸發器 可以定義在表和檢視上 3.語法 creat...