解釋一下斷言(assertion)
斷言是資料庫中一種更具一般性的約束機制,任何對斷言中有涉及的關係進行操作都會觸發斷言的檢查,如果斷言結果不為真,則該操作會被拒絕執行。
舉乙個生活中的例子:小a是一家之主,月初他定下了乙個小目標「這個月家裡的開銷要限制在一萬元以內」。然後每次他和他妻子花錢的時候都會觸發小a的這一句斷言,然後進行檢查,如果某筆消費使這句話變成假的,則不會進行這筆消費。
ps:有的sql實現中並沒有斷言機制,比如mysql。
ps:斷言對於系統效能的影響很大,特別是在斷言邏輯複雜的情況下。
解釋一下觸發器(trigger)
觸發器是使用者定義在關係表上一類由事件所驅動的特殊過程(procedre)。觸發器可以做到和斷言以及約束類似的效果,但是相比起斷言,觸發器更加注重達成或不達成條件後的處理。
若某sql語句對一張**進行操作時觸發了多個觸發器,則會按照
1.執行before型別的觸發器
2.執行觸發觸發器的sql語句
3.執行after型別的觸發器
為順序執行。另外,如果有多個同型別(比如多個before型別的觸發器)的觸發器被同時觸發,一般認為會按照觸發器的建立時間為順序,先建立的先被執行。
《資料庫系統概論》 第五章 資料庫完整性
dbms必須能夠實現如下功能 提供定義完整性約束條件的機制 sql中的ddl語句 立法 提供完整性檢查的方法 什麼時候檢查 怎麼檢查 執法 進行違約處理 create table中的primary key定義 為了避免對基本表進行全表掃瞄,dmbs一般都在主碼上自動建立乙個索引,如b 樹索引。在cr...
資料庫五(資料庫完整性)
一 實體完整性 實體完整性規則 主屬性不能取空值 關係模型中 primary key 單屬性碼可以定義為列級約束條件或者表級約束條件 多屬性碼則只能定義為表級約束條件 實體完整性檢查和違約處理 檢查主碼是否唯一,不唯一則拒絕插入或者修改 檢查主碼各屬性是否為空,只要有乙個為空就拒絕插入 修改 二 參...
資料庫實驗五 完整性
一 實驗目的 1 掌握資料庫約束的概念 2 熟悉 sql server 的完整性約束技術。3 了解 sql server 的違反完整性處理措施。二 實驗環境 windows下的sql 三 實驗內容 1.在前幾次實驗所使用的資料庫中新建乙個教師資訊表,表名為 teacher 字段包括 tno 教師編號...