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

精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久

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

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



    語(yǔ)法


    CREATE RULE rule

     
    AS condition_expression



    參數(shù)


    rule



    是新規(guī)則的名稱。規(guī)則名稱必須符合標(biāo)識(shí)符規(guī)則。可以選擇是否指定規(guī)則所有者的名稱。



    condition_expression



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



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



    注釋


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



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



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



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



    要?jiǎng)?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ī)則綁定到列時(shí),該規(guī)則將替換已經(jīng)綁定到該列的用戶定義數(shù)據(jù)類型的規(guī)則。但是,將規(guī)則綁定到用戶定義數(shù)據(jù)類型時(shí),該規(guī)則不會(huì)替換綁定到該數(shù)據(jù)類型的列的規(guī)則。下表顯示了當(dāng)將規(guī)則綁定到已經(jīng)存在規(guī)則的列和用戶定義數(shù)據(jù)類型時(shí),規(guī)則生效的優(yōu)先順序。



























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



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



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



    權(quán)限


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



    示例


    A. 范圍規(guī)則


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



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


    B. 列表規(guī)則


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



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


    C. 模式規(guī)則


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



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