CREATE RULE CREATE RULE - 北京怡康軟件科技有限公司 資源網(wǎng) "/>

亚洲av色香蕉一区二区三区,十四以下岁毛片带血a级,亚洲 校园 欧美 国产 另类,亚洲av日韩av一区谷露,色欲av无码一区二区三区

  • 相關(guān)軟件
    >CREATE RULE 創(chuàng)建者:webmaster 更新時間:2010-06-26 20:08

    創(chuàng)建稱為規(guī)則的對象。當(dāng)綁定到列或用戶定義數(shù)據(jù)類型時,規(guī)則將指定可以插入到列中的可接受的值。規(guī)則是一種向后兼容的功能,執(zhí)行一些與檢查約束相同的功能。CHECK 約束是使用 ALTER 或 CREATE TABLE 的 CHECK 關(guān)鍵字創(chuàng)建的,是對列中的值進(jìn)行限制的首選標(biāo)準(zhǔn)方法(可以對一列或多列定義多個約束)。列或用戶定義數(shù)據(jù)類型只能有一個綁定的規(guī)則。但是,列可以同時具有規(guī)則和一個或多個與其關(guān)聯(lián)的檢查約束。在這種情況下,將檢查所有限制。



    語法


    CREATE RULE rule

     
    AS condition_expression



    參數(shù)


    rule



    是新規(guī)則的名稱。規(guī)則名稱必須符合標(biāo)識符規(guī)則??梢赃x擇是否指定規(guī)則所有者的名稱。



    condition_expression



    是定義規(guī)則的條件。規(guī)則可以是 WHERE 子句中任何有效的表達(dá)式,并且可以包含諸如算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和謂詞(如 IN、LIKE、BETWEEN)之類的元素。規(guī)則不能引用列或其它數(shù)據(jù)庫對象??梢园灰脭?shù)據(jù)庫對象的內(nèi)置函數(shù)。



    condition_expression 包含一個變量。每個局部變量的前面都有一個 @ 符號。該表達(dá)式引用通過 UPDATE 或 INSERT 語句輸入的值。在創(chuàng)建規(guī)則時,可以使用任何名稱或符號表示值,但第一個字符必須是 @ 符號。



    注釋


    在單個批處理中,CREATE RULE 語句不能與其它 Transact-SQL 語句組合使用。規(guī)則不適用于在創(chuàng)建規(guī)則時已存在于數(shù)據(jù)庫中的數(shù)據(jù),而且規(guī)則不能綁定到系統(tǒng)數(shù)據(jù)類型。規(guī)則只能在當(dāng)前的數(shù)據(jù)庫中創(chuàng)建。創(chuàng)建規(guī)則后,執(zhí)行 sp_bindrule 可將規(guī)則綁定到列或用戶定義數(shù)據(jù)類型。



    規(guī)則必須與列的數(shù)據(jù)類型兼容。規(guī)則不能綁定到 text、image timestamp 列。一定要用單引號 (') 將字符和日期常量引起來,在二進(jìn)制常量前加 0x。例如,不能將 "@value LIKE A%" 用作數(shù)字列的規(guī)則。如果規(guī)則與其所綁定的列不兼容,Microsoft? SQL Server? 將在插入值時(而不是在綁定規(guī)則時)返回錯誤信息。



    對于用戶定義數(shù)據(jù)類型,只有嘗試在該類型的數(shù)據(jù)庫列中插入值,或更新該類型的數(shù)據(jù)庫列時,綁定到該類型的規(guī)則才會激活。因?yàn)橐?guī)則不檢驗(yàn)變量,所以在向用戶定義數(shù)據(jù)類型的變量賦值時,不要賦予綁定到該數(shù)據(jù)類型的列的規(guī)則所拒絕的值。



    若要獲得關(guān)于規(guī)則的報(bào)表,請使用 sp_help。若要顯示某條規(guī)則的文本,請以該規(guī)則的名稱作為參數(shù)來執(zhí)行存儲過程 sp_helptext。若要重命名規(guī)則,請使用 sp_rename。



    要創(chuàng)建與原有規(guī)則同名的新規(guī)則,必須在創(chuàng)建新規(guī)則之前將原有規(guī)則除去(使用 DROP RULE),而在除去規(guī)則之前,必須首先解除綁定(使用 sp_unbindrule)。使用 sp_unbindrule 解除規(guī)則與列的綁定。



    可以在不解除原有綁定的情況下將新規(guī)則綁定到列或數(shù)據(jù)類型;新規(guī)則將替代原有規(guī)則。綁定到列的規(guī)則總是優(yōu)先于綁定到用戶定義數(shù)據(jù)類型的規(guī)則。將規(guī)則綁定到列時,該規(guī)則將替換已經(jīng)綁定到該列的用戶定義數(shù)據(jù)類型的規(guī)則。但是,將規(guī)則綁定到用戶定義數(shù)據(jù)類型時,該規(guī)則不會替換綁定到該數(shù)據(jù)類型的列的規(guī)則。下表顯示了當(dāng)將規(guī)則綁定到已經(jīng)存在規(guī)則的列和用戶定義數(shù)據(jù)類型時,規(guī)則生效的優(yōu)先順序。



























    舊規(guī)則綁定到
    新規(guī)則綁定到用戶定義數(shù)據(jù)類型
    用戶定義數(shù)據(jù)類型舊規(guī)則被替換沒有變化
    舊規(guī)則被替換舊規(guī)則被替換



    如果列同時有默認(rèn)值和規(guī)則與之關(guān)聯(lián),則默認(rèn)值必須滿足規(guī)則的定義。與規(guī)則沖突的默認(rèn)值永遠(yuǎn)不能插入列。每次試圖插入這樣的默認(rèn)值時,SQL Server 都會生成錯誤信息。



    說明 SQL Server 是將空字符串解釋為單個空格還是真正的空字符串取決于 sp_dbcmptlevel 的設(shè)置。如果兼容級別小于或等于 65,SQL Server 就將空字符串解釋為單個空格。如果兼容級別等于 70,則 SQL Server 將空字符串解釋為空字符串。有關(guān)更多信息,請參見 sp_dbcmptlevel。



    權(quán)限


    CREATE RULE 權(quán)限默認(rèn)授予 sysadmin 固定服務(wù)器角色成員和 db_ddladmindb_owner 固定數(shù)據(jù)庫角色成員。sysadmin、db_ownerdb_securityadmin 角色的成員可以將權(quán)限轉(zhuǎn)讓給其他用戶。



    示例


    A. 范圍規(guī)則


    下例創(chuàng)建一個規(guī)則,用以限制插入該規(guī)則所綁定的列中的整數(shù)范圍。



    CREATE RULE range_rule
    AS
    @range >= $1000 AND @range < $20000


    B. 列表規(guī)則


    下例創(chuàng)建一個規(guī)則,用以將輸入到該規(guī)則所綁定的列中的實(shí)際值限制為只能是該規(guī)則中列出的值。



    CREATE RULE list_rule
    AS
    @list IN ('1389', '0736', '0877')


    C. 模式規(guī)則


    下例創(chuàng)建一個遵循這種模式的規(guī)則:任意兩個字符的后面跟一個連字符和任意多個字符(或沒有字符),并以 0 到 9 之間的整數(shù)結(jié)尾。



    CREATE RULE pattern_rule 
    AS
    @value LIKE '_ _-%[0-9]'
    相關(guān)文章
    本頁查看次數(shù):