标准数据库事务完整性约束
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
1、commit work:提交當(dāng)前事務(wù),也就是將事務(wù)所做的更新在數(shù)據(jù)庫中持久保存,在事務(wù)被提交后,一個新的事務(wù)自動開始。
2、rollback work:回滾當(dāng)前事務(wù),即撤銷該事務(wù)中所有SQL語句對數(shù)據(jù)的更新。這樣,數(shù)據(jù)庫就恢復(fù)到執(zhí)行該事務(wù)第一條語句之前的狀態(tài)。
3、一個完整性約束可以是屬于數(shù)據(jù)庫的任意謂詞。但檢測代價太高,大多數(shù)數(shù)據(jù)庫允許指定那些只需要極小開銷就可以檢測的完整性約束。
4、完整性約束通常被看成是數(shù)據(jù)庫模式設(shè)計過程的一部分,她作為用于創(chuàng)建關(guān)系的create table命令的一部分被聲明。
5、單個關(guān)系上的約束,not null,unique,check < 謂詞>。
6、check(p)子句指定一個謂詞P,關(guān)系中的每個元組都必須滿足謂詞P。通常用check子句保證屬性值滿足指定的條件,實際上創(chuàng)建了一個強大的類型系統(tǒng)。
7、我們通常希望保證在一個關(guān)系中給定的屬性集上的取值也在另一個關(guān)系的特定屬性集的取值中出現(xiàn)。這種情況稱為參照完整性。
8、外碼聲明了相關(guān)聯(lián)的on delete cascade刪除參照了被刪除系的元組。on update cascade更新被參照字段,將參照的元組也一并更新。QL允許指明foreign ?key子句指明出cascade以外的其他動作,如果約束被違反,可將參照系域設(shè)置為null,或者置為域的默認(rèn)值。如果存在設(shè)計多個關(guān)系的外碼依賴鏈,則在鏈的一段所做的刪除或更新可能傳至整個鏈。
9、在某一步之后完整性約束也許會暫時被違反,但是后面的某一步也許就會消除這個違反。SQL允許將initially deferred子句加入到約束聲明中去,這樣完整性約束不是在事務(wù)的中間步驟上檢查,而是在事務(wù)結(jié)束的時候檢查。一個約束可以被指定為可延遲的約束。set constraints constraint-list deferred語句作為事務(wù)的一部分,會導(dǎo)致對指定約束的檢查延遲到該事務(wù)結(jié)束時執(zhí)行。
10、一個斷言就是一個謂詞,它表達了我們希望數(shù)據(jù)庫總能滿足的一個條件。斷言,create assertion <name> check <expression>。
轉(zhuǎn)載于:https://my.oschina.net/loveyj/blog/204460
總結(jié)
以上是生活随笔為你收集整理的标准数据库事务完整性约束的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ccccasda
- 下一篇: 如何抓获JVM crash的幕后黑手