DB2 自動(dòng)遞增字段實(shí)現(xiàn)方法

字號(hào):


    使用這個(gè)一般是用作識(shí)別碼的,當(dāng)做定義表格的主鍵。generated語(yǔ)法則可以自定義你想怎么產(chǎn)生這個(gè)值的策略。
    語(yǔ)法如下:
    column definition generated {always | by default}
    as {identity identity rules | using your rules}
    我們先刪掉上次我們建立的表格:
    db2 => drop table nomination
    然后再創(chuàng)建一個(gè)表格:
    代碼如下:
    Create table nomination
    (
    nominationID BIGINT Not Null Primary Key generated always as identity,
    nominee char(6) Not Null,
    nominator char(6) Not Null,
    reason VARCHAR(250),
    nomdate date Not Null,
    categoryid INTEGER Not Null,
    check (nominee != nominator) not enforced enable query optimization,
    Foreign Key CategoryExists (categoryid)
    references category (categoryid) on delete restrict
    )
    注意黑體字,以后我們就不能使用insert或者update來(lái)顯式的指定它的值了。
    而DB2中的identity也提供了多種策略,具體的可以去查DB2手冊(cè),我們舉例如下:
    我們先刪掉上次我們建立的表格:
    db2 => drop table category
    然后建立表單
    代碼如下:
    Create table category
    (
    CategoryID INTEGER Primary Key Generated Always as Identity
    (Start With 1 Increment by 1 minvalue 0 maxvalue 999999999
    no cycle cache 5 no order),
    CateogryName VARCHAR(50) Not Null,
    Eligibility VARCHAR(250)
    )
    黑體字中identity中的語(yǔ)句你都能在DB2的手冊(cè)中查到,都是自然語(yǔ)言一看就懂了。
    有時(shí)候你并不只想去做數(shù)字的填充,你可能還想處理一些字母,那么下邊這個(gè)轉(zhuǎn)換大寫(xiě)的例子就是給你的:
    db2 => alter table category add column
    UpperCatName VARCHAR(50) generated always as (upper(CategoryName))
    關(guān)于這些在DB2的文檔里都有具體說(shuō)明。