給DB2某表增加一個自增長列


如果是MySQL表,那么任務就很簡單,一句SQL可以搞定。而DB2表,就要費一點周折了。

首先,我們來看一眼目標表:

這個表,有字段有數據,我們需要做的是,給它加一個唯一性的ID列。

我們可以通過工具獲得其DML如下:

CREATE TABLE RTTS.T1(CUSTOMER_ID CHAR(20) NOT NULL, PRODUCT_ID INTEGER NOT NULL);

接下來,要創建一個類似的表,但要多增加一個自增的ID字段,建表語句如下:

CREATE TABLE RTTS.T2(id INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 1,INCREMENT BY 1,NO CACHE) PRIMARY KEY,CUSTOMER_ID CHAR(20) NOT NULL, PRODUCT_ID INTEGER NOT NULL);

注意id這個字段不一定非要是主鍵,更可以換成別的名。你完全可以根據自己情況調整的。

再接下來,需要把原有表的數據導入到新表里,采用如下語句:

INSERT INTO RTTS.T2(CUSTOMER_ID,PRODUCT_ID) SELECT CUSTOMER_ID,PRODUCT_ID FROM RTTS.T1;

然后,刪除掉原來的表(為安全起見,可以改名,待新表數據確認無誤再刪除):

drop table RTTS.T1

再將新表改名:

RENAME TABLE "RTTS"."T2" TO "T1"

最后看一眼“新的”T1表,是否是我們想要的:

最后驗證達到要求了。

就是這樣,在MySQL里面,類似alter table test_tb  add ID int(10) primary key AUTO_INCREMENT;的語句,一句話能做到的事情,在DB2里還是費事些。

DB2畢竟老,很多事情的解決之道都不是為現在用戶設計的,而MySQL是。而MySQL進了Oracle的門以后,前途...有點可惜了。

以上代碼是在dbvis.exe里執行過的,您可以從 http://pan.baidu.com/s/1gmGem 下載。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM