zoukankan      html  css  js  c++  java
  • 给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 下载。

  • 相关阅读:
    03-字典
    02-列表
    01-字符串操作
    Django中的跨域问题
    Codeforces Round #617 (Div. 3) A
    Codeforces Round #717 (Div. 2) A
    如何在Vuespa中使用less
    excle导出
    ajaxFileUpload上传文件
    图片插入word
  • 原文地址:https://www.cnblogs.com/heyang78/p/3450273.html
Copyright © 2011-2022 走看看