<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 37,  comments - 9,  trackbacks - 0
    唯一約束

    唯一約束與創(chuàng)建唯一索引基本上是一回事,因?yàn)樵趧?chuàng)建唯一約束的時(shí)候,系統(tǒng)會(huì)創(chuàng)建對(duì)應(yīng)的一個(gè)唯一索引,通過(guò)唯一索引來(lái)實(shí)現(xiàn)約束。不過(guò)唯一約束更直觀的表達(dá)了對(duì)應(yīng)列的唯一性,使得對(duì)應(yīng)索引的目的更加清晰,所以一般建議創(chuàng)建唯一約束而不是只創(chuàng)建唯一索引。

    在PD中創(chuàng)建唯一約束的操作,以教室表來(lái)說(shuō),RoomID是主鍵,必然是唯一的,RoomName如果我們也要去必須是唯一的,那么具體操作如下:

    在PD的模型設(shè)計(jì)面板中,雙擊“教室”表,打開(kāi)屬性窗口,切換到"”Keys”選項(xiàng)卡,可以看到里面有一行數(shù)據(jù)PK_ClassRoom,這是主鍵約束。添加一行數(shù)據(jù),命名為UQ_RoomName,不能將右邊的“P”列選上,然后單擊工具欄的“屬性”按鈕,彈出UQ_RoomName的屬性窗口,切換到列選項(xiàng)卡,單擊增加列按鈕,選擇將RoomName列添加到其中,然后單擊確定即可完成唯一約束的添加。



    這樣系統(tǒng)就會(huì)自動(dòng)創(chuàng)建唯一約束。

    CHECK約束

    CHECK分為列約束和表約束,列約束是只對(duì)表中的某一個(gè)列進(jìn)行的約束,可以在列的屬性中進(jìn)行設(shè)置,而表約束是對(duì)多個(gè)列進(jìn)行的約束,需要在表的屬性中進(jìn)行設(shè)置(其實(shí)列約束也可以在表約束中設(shè)置)。

    1.標(biāo)準(zhǔn)CHECK約束

    對(duì)于一些常用的CHECK約束,可以直接通過(guò)設(shè)置界面來(lái)完成。以班級(jí)表為例,ClassName每個(gè)學(xué)校有自己的命名規(guī)則,假設(shè)這里規(guī)定ClassName必須以2開(kāi)頭,那么需要在ClassName列上定義CHECK約束,使得其滿(mǎn)足命名規(guī)范。具體操作是在PD中雙擊Class表,打開(kāi)Class的屬性窗口,切換到列選項(xiàng)卡,選擇ClassName列,單擊工具欄的“屬性”按鈕,彈出ClassName的屬性窗口,切換到StandardChecks選項(xiàng)卡如圖:



    在這個(gè)選項(xiàng)卡可以定義屬性的標(biāo)準(zhǔn)檢查約束,窗口中每項(xiàng)的參數(shù)的含義,如下:

    參數(shù) 說(shuō)明
    Minimum 屬性可接受的最小數(shù)
    Maximum 屬性可接受的最大數(shù)
    Default 屬性不賦值時(shí),系統(tǒng)提供的默認(rèn)值
    Unit 單位,如公里、噸、元
    Format 屬性的數(shù)據(jù)顯示格式
    Lowercase 屬性的賦值全部變?yōu)樾?xiě)字母
    Uppercase 屬性的賦值全部變?yōu)榇髮?xiě)字母
    Cannot modify 該屬性一旦賦值不能再修改
    List Of Values 屬性賦值列表,除列表中的值,不能有其他的值
    Label 屬性列表值的標(biāo)簽
    2.直接編寫(xiě)SQL語(yǔ)句的CHECK約束

    在前面彈出ClassName屬性窗口中,單擊左下角的“More”按鈕,系統(tǒng)將彈出更多的選項(xiàng)卡,切換到“Additional Checks”選項(xiàng)卡,可以設(shè)置約束名和具體的約束內(nèi)容,如圖所示:



    表級(jí)的CHECK約束與列級(jí)的CHECK約束設(shè)置類(lèi)似,單擊表屬性窗口左下角的“More”按鈕,切換到Check選項(xiàng)卡,設(shè)置CHECK約束的命名和SQL語(yǔ)句內(nèi)容。



    3.使用Rule創(chuàng)建約束

    同樣以班級(jí)名必須以2開(kāi)頭為例,通過(guò)Rule創(chuàng)建CHECK約束。首先需要?jiǎng)?chuàng)建一個(gè)Rule,雙擊Class表,打開(kāi)表的屬性窗口,切換到Rules選項(xiàng)卡,單擊“Create a Object”按鈕,系統(tǒng)將打開(kāi)一個(gè)業(yè)務(wù)規(guī)則屬性窗口,修改規(guī)則名,并將規(guī)則的類(lèi)型修改為Constraint,如圖所示:



    然后切換到Expression選項(xiàng)卡,設(shè)置規(guī)則的內(nèi)容為“ClassName LIKE '2%'”,單擊確定按鈕即可完成Rule的設(shè)置。切換到表屬性的Check選項(xiàng)卡,默認(rèn)約束內(nèi)容中的“%RULES%”就是用來(lái)表示Rule中設(shè)置的內(nèi)容,如果我們還有一些其他的CHECK約束內(nèi)容,不希望在Rule中設(shè)置,而是在Check選項(xiàng)卡中設(shè)置,那么只需要?jiǎng)h除%RULES%將CHECK約束內(nèi)容添加進(jìn)去,也可以保留%RULES%,然后在與%RULES%之間添加一個(gè)and即可。比如規(guī)定ClassID必須小于10000,那么我們可以將Check內(nèi)容設(shè)置如下:



    生成的腳本如下:

    create table Class (
       ClassID              int                  not null,
       ClassName            varchar(20)          not null,
       constraint PK_CLASS primary key nonclustered (ClassID),
       constraint CKT_CLASS check (ClassID<10000),
       constraint ClassNameRule check (ClassName LIKE '2%')
    )
    go

    可以看到,根據(jù)Rule生成的CHECK約束與在Check選項(xiàng)卡中設(shè)置的約束將分別創(chuàng)建一個(gè)約束,相互并不影響。

    默認(rèn)約束

    默認(rèn)約束是用戶(hù)在沒(méi)有輸入值的情況下,系統(tǒng)給出默認(rèn)的值。最常用的是CreateTime字段,設(shè)置默認(rèn)值為getdate(),在用戶(hù)創(chuàng)建一行數(shù)據(jù)時(shí)記錄下創(chuàng)建時(shí)間。例如對(duì)于選課表,需要記錄下選課的時(shí)間,則可以設(shè)置ApplyTime的默認(rèn)值為getdate()函數(shù)。



    設(shè)置默認(rèn)值約束的操作如下:雙擊選課表,打開(kāi)表屬性窗口,選擇ApplyTime字段,單擊工具欄的屬性按鈕,打開(kāi)列的屬性窗口,切換到Standard Checks選項(xiàng)卡,在Default下拉列表框中選擇getdate()即可。



    至此我們所有的約束在PD中的設(shè)置都介紹完了,下一篇將介紹視圖、存儲(chǔ)過(guò)程等數(shù)據(jù)庫(kù)對(duì)象。

    from: http://www.cnblogs.com/studyzy/archive/2009/12/17/1626650.html
    posted on 2011-02-14 20:32 wawlian 閱讀(1685) 評(píng)論(0)  編輯  收藏 所屬分類(lèi):

    <2011年2月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272812345
    6789101112

    常用鏈接

    留言簿

    隨筆分類(lèi)

    隨筆檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲午夜国产精品| 亚洲日本va在线视频观看| 亚洲av色福利天堂| 三年片免费高清版| 久久久久国产成人精品亚洲午夜 | 精品国产亚洲一区二区三区| 一级一级毛片免费播放| 亚洲精品国产高清嫩草影院| 乱人伦中文视频在线观看免费| 日本免费人成黄页网观看视频| 亚洲AV无码专区国产乱码不卡| 日本一道综合久久aⅴ免费| 成人毛片100免费观看| 国产成人亚洲合集青青草原精品 | 久久er国产精品免费观看8| 久久精品国产亚洲7777| h片在线免费观看| 亚洲人成网站日本片| 亚洲国产一级在线观看| 美女被免费喷白浆视频| 激情小说亚洲图片| 亚洲午夜福利在线观看| 免费鲁丝片一级观看| jzzjzz免费观看大片免费| 亚洲AV无码不卡在线播放| 国产精品视频免费观看| 国产精品亚洲专区无码唯爱网| 无码欧精品亚洲日韩一区| 免费一级特黄特色大片在线 | 午夜两性色视频免费网站| 久久国产精品2020免费m3u8| 亚洲三级视频在线观看| 国产乱色精品成人免费视频| 视频免费在线观看| 国产成人精品日本亚洲网址| 亚洲性猛交XXXX| 亚洲国产专区一区| 免费一级国产生活片| 天天看免费高清影视| baoyu777永久免费视频 | 黄页网站在线观看免费高清|