zoukankan      html  css  js  c++  java
  • 批量修改相同結構的table layout

      最近公司的財務系統要和總部的財務系統版本同步,由於公司的財務系統有十幾年沒有和總部的財務系統進行版本同步了,趁這次OS升級的機會進行同步,公司將table layout的同步交給我處理,由於公司的財務系統備份了很多表,而這些表的結構都一樣,命名也有一定的規則,比如表ss01,後面的備份的表就是ss0101,ss0102...。

      經過和總部的table layou相比之後發現,所有的table layout字段結構都沒有改變,這讓我很吃驚,也很佩服,說明當初設計table layou的人設計table的多么的完美,十幾年之後僅僅變化了一些字段的精度,比如:decimal(14,3),改為decimal(18,3),或者是默認值有些改變,所以我只需要修改精度和默認值就OK了。

      但是每個表都有幾十個相同結構的表啊,怎么辦?難道要我一個一個的修改表結構,這樣要做到猴年馬月啊!(PS:公司的財務系統總共有1000多個表),後來想了個偷懶的辦法:用遊標生成命令:直接print出來,然後執行print的語句,呵呵!如何儘快的比對公司和總部的兩table的layout呢?我將表的design試圖中的結構複製出來,貼到EXCEL中,字段名稱、類型、長度,一目了然,只需再加一個默認值,默認值就要自己到design視圖中去找一下了,至於是要修改精度呢,還是要修改默認值,按需索取,呵呵!

      語句如下:

    代码
     1 
     2 
     3 select   name   from   sysobjects   where   type='U' AND NAME LIKE 'ss82%' order by name 
     4 
     5 -----
     6 DECLARE @dbName NVARCHAR(128)
     7 DECLARE @qSql NVARCHAR(4000)
     8 DECLARE dbList CURSOR Local FOR            --建立遊標
     9 select   name   from   sysobjects   where   type='U' AND NAME LIKE 'ss82%' order by name 
    10 for Read Only                                --禁止通過遊標更新
    11 OPEN dbList
    12 FETCH Next FROM dbList INTO @dbName
    13 While (@@FETCH_STATUS <> -1)
    14  BEGIN
    15     set @qSql=''
    16     --修改默認值
    17     set @qSql='alter table '+@dbName+' drop constraint df_'+@dbName+'_amtd  '
    18     SET @qSql=@qSql+'alter table '+@dbName+' add constraint df_'+@dbName+'_amtd'+' default (0) for amtd'
    19     --修改表結構
    20     --set @qSql=@qSql+' aLTER table '+@dbName+' aLTER cOLUMN amt2 decimal(18,3) '
    21     --set @qSql=@qSql+' aLTER table '+@dbName+' aLTER cOLUMN qty decimal(18,3) '
    22     --set @qSql=@qSql+' aLTER table '+@dbName+' aLTER cOLUMN amt1 decimal(18,3) '
    23     --set @qSql=@qSql+' aLTER table '+@dbName+' aLTER cOLUMN amt0 decimal(18, 3) '
    24     --set @qSql=@qSql+' aLTER table '+@dbName+' aLTER cOLUMN upri decimal(13, 6) '
    25     PRINT @qSql
    26     
    27     FETCH NEXT FROM dbList INTO @dbName
    28 END
    29 close dbList
    30 deallocate dbList
    31 
    32 --删除默认值
    33  select   *   from   sysobjects   where   object_name(parent_obj)='SS83KM'   
    34   --执行结果也可以得到表的默认值信息   
    35  --------------------------------------------------------------------   
    36  -- 确定默认值名称后,就可用   
    37   alter   table   [表名]   drop   constraint   [默认值名]
    38 
    39 /***************************************************************************************/
    40  --alter table LOGSS83SF drop constraint DF_LOGSS83SF_LOGDT  
    41 ---
    42 
    43  select   *   from   sysobjects   where   object_name(parent_obj)='SS821F'   
    44   alter   table   LOGSS83SF   drop   constraint   DF_LOGSS83SF_LOGDT
    45   
    46   
    47   
      
  • 相关阅读:
    selenium webdriver 执行Javascript
    selenium webdriver 定位元素 第一部分
    selenium webdriver 模拟鼠标悬浮
    JaveWeb 公司项目(3)----- 通过Thrift端口获取数据库数据
    JaveWeb 公司项目(2)----- 类模态窗口显示DIV并将DIV放置在屏幕正中间
    JaveWeb 公司项目(1)----- 使Div覆盖另一个Div完成切换效果
    Intellij Idea修改css文件即时更新生成效果
    Intellij idea 2017 图标含义
    下载安装tomcat和jdk,配置运行环境,与Intellij idea 2017关联
    IntelliJ IDEA Tomcat中端口被占用的问题
  • 原文地址:https://www.cnblogs.com/jxcia_Lai/p/1861224.html
Copyright © 2011-2022 走看看