程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> DB2 實現自動遞增字段的方法

DB2 實現自動遞增字段的方法

編輯:關於SqlServer
 

DB2提供了當有一行插入的時候自動在某一列添加值的功能,可以使用所謂identity rules,簡單點的比如某個數值的遞增填入該列中,當然也有很復雜的。


使用這個一般是用作識別碼的,當做定義表格的主鍵。generated語法則可以自定義你想怎麼產生這個值的策略。

語法如下:

column definition generated {always | by default}

as {identity identity rules | using your rules}

我們先刪掉上次我們建立的表格:

db2 => drop table nomination

然後再創建一個表格:


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來顯式的指定它的值了。

而DB2中的identity也提供了多種策略,具體的可以去查DB2手冊,我們舉例如下:

我們先刪掉上次我們建立的表格:

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中的語句你都能在DB2的手冊中查到,都是自然語言一看就懂了。

有時候你並不只想去做數字的填充,你可能還想處理一些字母,那麼下邊這個轉換大寫的例子就是給你的:

db2 => alter table category add column

UpperCatName VARCHAR(50) generated always as (upper(CategoryName))

關於這些在DB2的文檔裡都有具體說明。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved