DB2在原來的表裡新增聯合主鍵,新增非空列的方法

2021-09-30 19:05:24 字數 942 閱讀 3402

#大家都知道,我們的主鍵是不為空的,但是這時候我們要新增乙個字段,與原有的主鍵組成聯合主鍵,這個字段往往我們需要把它設定成乙個非空的字段

這裡有個坑如果原有的表裡面是有資料的,這是時候直接使用語句進行欄位的新增並設定為not null是不可以的,會報錯!那麼怎麼解決呢!分為以下幾個步驟一一進行即可:

比如:我們要在table_employee中新增乙個欄位user_id與之前的employee_id作為聯合主鍵(假設原表中有值):

**1.建立列:**

alter table table_employee add column user_id varchar(30);

**2.在db2的服務端用cmd中對此表進行重構(沒有重構會報錯-668):**

reorg table **3.向此列中新增值,這裡可以不用where條件,因為我們的目的就是想把此列的資料全部填充為非空:**

update table_employee set user_id='dwefewf';

**4.設定user_id為非空:**

alter table table_employee alter user_id set not null;

上面的設定欄位為空的方法就解決了,下面就開始設定聯合主鍵了

**5.刪除原有的聯合主鍵:**

alter table table_employee drop primary key ;

**6.重複第二步操作:**

reorg table **7.新增聯合主鍵:**

alter table table_employee

add constraint pk_fk

primary key(employee_id,user_id);

不經常寫部落格,所以不太會組織語言,但希望可以解決您的問題,坑已認真踏過,請放心使用!

你知道如何查詢 刪除 建立DB2資料表的主鍵嗎?

一 查詢表主鍵。describe indexes for table 例 describe indexes for table db2inst1.aaa 二 刪除表主鍵。alter table drop primary key 例 alter table db2inst1.aaa drop prim...

在 AIX 上使用 DB2 的幾個基本命令

最近在 aix 上安裝並使用了 db2 9.5,下面是總結的幾個常用的命令操作。我的 db2 安裝在預設的 opt ibm db2 v9.5 目錄下,例項為 db2inst1。1.set o vi aix 上類似於 doskey 的命令,將輸入的命令歷史儲存起來,之後可以按 esc 鍵然後再按 k ...

在 AIX 上使用 DB2 的幾個基本命令

最近在 aix 上安裝並使用了 db2 9.5,下面是總結的幾個常用的命令操作。我的 db2 安裝在預設的 opt ibm db2 v9.5 目錄下,例項為 db2inst1。1.set o vi aix 上類似於 doskey 的命令,將輸入的命令歷史儲存起來,之後可以按 esc 鍵然後再按 k ...