国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

數據庫 規則

2024-07-21 02:13:00
字體:
來源:轉載
供稿:網友
 規則(rule) 就是數據庫中對存儲在表的列或用戶自定義數據類型中的值的規定和限制。規則是單獨存儲的獨立的數據庫對象。規則與其作用的表或用戶自定義數據類型是相互獨立的,即表或用戶自定義對象的刪除、修改不會對與之相連的規則產生影響。規則和約束可以同時使用,表的列可以有一個規則及多個check 約束。規則與check 約束很相似,相比之下,使用在altertable 或create table 命令中的check 約束是更標準的限制列值的方法,但check 約束不能直接作用于用戶自定義數據類型。

9.2.1 創建規則
(1) 用create rule 命令創建規則
create rule 命令用于在當前數據庫中創建規則,其語法如下:
create rule rule_name as condition_expression
其中condition_expression 子句是規則的定義。condition_expression 子句可以是能用于where 條件子句中的任何表達式,它可以包含算術運算符、關系運算符和謂詞(如in、like、 between 等)。

注意:condition_expression子句中的表達式必須以字符“@”開頭。



(2) 用enterprise manager 創建規則
在enterprise manager 中選擇數據庫對象“rules”,單擊右鍵從快捷菜單中選擇“newrule”選項,即會彈出如圖9-1 所示的創建規則屬性對話框。輸入規則名稱和表達式之后,單擊“確定”按鈕,即完成規則的創建。


9.2.2 查看規則
(1) 用enterprise manager 查看規則
在enterprise manager 中選擇“rules” 對象,即可從右邊的任務板中看到規則的大部分信息,包括規則的名稱、所有者、創建時間,等如圖9-2 所示。在sql server 2000 中不像7.0 版本可以直接在任務板中看到規則的表達式,這需要查看規則的屬性。可以選擇要查看的規則,單擊右鍵,從快捷菜單中選擇“properties” 選項,即會出現如圖9-3 所示的對話框,可以從中編輯規則的表達式。修改規則的名稱可以通過sp_rename 系統存儲過程進行,也可以直接在圖9-2 中用右鍵單擊要修改的規則,從快捷菜單中選擇“重命名(rename)” 菜單項,進行名稱修改。

(2) 用存儲過程sp_helptext 查看規則
使用sp_helptext 存儲過程可以查看規則的細節,其語法如下:
sp_helptext [@objname =] 'name'
其中[@objname =] 'name'子句指明對象的名稱,用sp_helptext 存儲過程查看的對象可
以是當前數據庫中的規則、缺省值、觸發器、視圖或未加密的存儲過程。

例9-5: 查看規則hire_date_rule。
exec sp_helptext hire_date_rule
運行結果如下:
text
--------------------------------------------------------------------------------------
create rule hire_date_rule
as @hire_date >= '1980-01-01' and @hire_date <= getdate()

9.2.3 規則的綁定與松綁
創建規則后,規則僅僅只是一個存在于數據庫中的對象,并未發生作用。需要將規則與數據庫表或用戶自定義對象聯系起來,才能達到創建規則的目的。聯系的方法稱為“綁定”。所謂綁定就是指定規則作用于哪個表的哪一列或哪個用戶自定義數據類型。表的一列或一個用戶自定義數據類型只能與一個規則相綁定,而一個規則可以綁定多對象,這正是規則的魅力所在。解除規則與對象的綁定稱為“松綁”。

(1) 用存儲過程sp_bindrule 綁定規則
存儲過程sp_bindrule 可以綁定一個規則到表的一個列或一個用戶自定義數據類型上。其語法如下:
sp_bindrule [@rulename =] 'rule',
[@objname =] 'object_name'
[, 'futureonly']
各參數說明如下:
[@rulename =] 'rule'
指定規則名稱。
[@objname =] 'object_name'
指定規則綁定的對象。
'futureonly'
此選項僅在綁定規則到用戶自定義數據類型上時才可以使用。當指定此選項時,僅以后使用此用戶自定義數據類型的列會應用新規則,而當前已經使用此數據類型的列則不受影響。

例9-6: 綁定規則hire_date_rule 到用戶自定義數據類型hire_date 上。
exec sp_bindrule hire_date_rule, hire_date
運行結果如下:
rule bound to data type.
the new rule has been bound to column(s) of the specified user data type.
例9-7: 綁定規則hire_date_rule 到用戶自定義數據類型hire_date 上,帶'futureonly'選項。
exec sp_bindrule hire_date_rule, hire_date, 'futureonly'
運行結果如下:
rule bound to data type.
例9-8: 綁定規則my_rule 到orders 表的字段order_id。
exec sp_bindrule id_rule, 'orders.[order_id]'
運行結果如下:
rule bound to table column.
注意:規則對已經輸入表中的數據不起作用。
      規則所指定的數據類型必須與所綁定的對象的數據類型一致,且規則不能綁定一個數據類型為text、mage或timestamp的列。
      與表的列綁定的規則優先于與用戶自定義數據類型綁定的列,因此,如果表的列的數據類型與規則a綁定,同時列又與規則b綁定,則以規則b為列的規則。
      你可以直接用一個新的規則來綁定列或用戶自定義數據類型,而不需要先將其原來綁定的規則解除,系統會將早班規則覆蓋。

(2)用存儲過程sp_unbindrule 解除規則的綁定
存儲過程sp_unbindrule 可解除規則與列或用戶自定義數據類型的綁定,其語法如下:
sp_unbindrule [@objname =] 'object_name'
[,'futureonly']
其中'futureonly'選項同綁定時一樣,僅用于用戶自定義數據類型,它指定現有的用此用戶自定義數據類型定義的列仍然保持與此規則的綁定。如果不指定此項,所有由此用戶自定義數據類型定義的列也將隨之解除與此規則的綁定。
例9-9: 解除規則hire_date_rule 與用戶自定義數據類型birthday 的綁定,帶'futureonly'
選項。
exec sp_unbindrule birthday, 'futureonly'
運行結果如下:
(1 row(s) affected)
rule unbound from data type.

(3) 用enterprise manager 管理規則的綁定
在enterprise manager 中,選擇要進行綁定設置的規則,單擊右鍵,從快捷菜單中選擇“properties” 選項,即會出現如圖9-3 所示的規則屬性對話框。圖中的“bind udts…”按鈕用于綁定用戶自定義數據類型,“bind columns…” 按鈕用于綁定表的列。

在圖9-3 中單擊“bind udts…” 按鈕,則出現如圖9-4 所示的綁定規則到用戶自定義數據類型的對話框;單擊“bind columns…” 按鈕,則出現如圖9-5 所示的綁定規則到表的列的對話框。


9.2.4 刪除規則
可以在enterprise manager 中選擇規則,單擊右鍵,從快捷菜單中選擇“delete” 選項刪除規則,也可使用drop rule 命令刪除當前數據庫中的一個或多個規則。其語法如下:
drop rule {rule_name} [,...n]
注意:在刪除一個規則前,必須先將與其綁定的對象解除綁定。
例9-10: 刪除多個規則
drop rule mytest1_rule,mytest2_rule

上一篇:數據庫 缺省值

下一篇:數據完整性概述

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 钟山县| 泰兴市| 大庆市| 屏东县| 珲春市| 福贡县| 灵寿县| 台前县| 化州市| 民权县| 棋牌| 五大连池市| 徐闻县| 巴塘县| 乌恰县| 临沂市| 林口县| 西充县| 瑞安市| 阿巴嘎旗| 常州市| 安宁市| 昌江| 龙泉市| 康乐县| 湟中县| 珠海市| 舒兰市| 丰县| 辽中县| 武宁县| 廉江市| 巴中市| 合江县| 阿鲁科尔沁旗| 西平县| 石泉县| 晴隆县| 腾冲县| 独山县| 建瓯市|