第十一章
可重複使用的資料庫物件(默認值和規則)
Default
•在insert語法中,沒有提供該列的值時,預設給予一個值
•建立
–create default default_name as constant_expression
•給予
–sp_bindefault default_name, object_name
•解除
–sp_unbindefault object_name
•刪除
–drop default default_name
•規則
•一個資料表只可以有一個Defaults物件
•如果該列已經設定了default的值,就不能套用Defaults物件
•對之前的資料並不會產生影響
Rule
•規則是一個資料庫物件,防止新增和更新不符合規則的條件
–就像一個check constraint,它可以用來執行資料完整性
•建立
–create rule rule_name as condition_expression
•給予
–sp_bindrule rule_name, object_name
•解除
–sp_unbindrule object_name
•刪除
–drop rule rule_name
•規則
•一個資料表只可以有一個Rules物件
•二個Rules物件的話,第二個Rules物件會覆蓋掉第一個Rules物件
•Rules物件可以包含一個以上的Rules
•對之前的資料不會產生影響
使用者定義的數據類型(User-Defined Datatype)
•Defaults和Rules可以bound到user-defined
•使用使用者定義的數據,當Default或Rule有做修改的情況下,只是套用使用者定義的數據就不需要個別修改
•給予
–sp_bindefault def_state, type_ch_state
•解除
–sp_unbindefault type_ch_state
•一旦一個使用者定義的數據綁定到它的default和/或rule,任何使用用戶定義的數據類型的列自動繼承default和/或rule
•如果在column中有建立一個user-defined
•但在bound一個user-defined物件給你
•會優先使用bound的user-defined物件
•sp_helptext {default_name | rule_name}
–查詢建立時的default或rule訊息
•sp_rename old_object_name, new_object_name
–更改名稱
數據完整性的方法
•預設值和規則的修改 (Defaults and Rules Review)
•是Transact-SQL擴展
•不需要具體指定一個資料表,並且是可重複使用的
•可使用用戶定義的數據類型
•不能創建資料表時創建的,因此需要額外的步驟(創建和綁定)
•不能執行多重檢查
•不能有相關的消息
•可以在sp_helptext查詢存儲過程
•限制修改(Constraints Review)
•是ANSI
•可以使用在建立資料表,並不能重覆使用
•不能伴隨著自行定義的資料類型
•創建表時創建(或修改),並且不需要額外的步驟
•可以方便地實現多列檢查
•可以有關聯的訊息
•可以查看sp_helpconstraint
•選擇方法
•使用限制
–實施具體被定義資料表的完整性
–堅持以ANSI標準
–進一步限制列的網域
–輕鬆地定義行的兩列之間的檢查
•使用數據庫對象
–實施,可以適用於多個列,資料表或資料庫的完整性
–用戶定義的數據類型綁定規則或默認