declare @TableName nvarchar(250)
--声明读取数据库所有数据表名称游标mycursor1
declare mycursor1 cursor for select name from dbo.SysObjects WHERE OBJECTPROPERTY(ID, 'IsUserTable') = 1
open mycursor1
--从游标里取出数据赋值到我们刚才声明的数据表名变量中
fetch next from mycursor1 into @TableName
--如果游标执行成功
while (@@fetch_status=0)
begin
--声明读取数据表中所有int 不能为空 的字段 名称游标mycursor2
declare @ColumnName nvarchar(250)
--要修改的自增列
declare mycursor2 cursor for select name from syscolumns Where ID=OBJECT_ID(N'['+@TableName+']') and name like ('%id%') and xtype=56 and isnullable=0
--打开游标
open mycursor2
--从游标里取出数据赋值到我们刚才声明的数据字段变量中
fetch next from mycursor2 into @ColumnName
IF (CURSOR_STATUS('global','mycursor2')=1 )--游标的结果集至少有一行
begin
--如果游标执行成功
while (@@fetch_status=0)
begin
--新增一列,把自增列值赋给新增列,删除自增列,修改改列名
exec('alter table ['+@TableName+'] add temp_id int null')
exec('update [DB_zabnew].[dbo].[zab_chaKan] set temp_id='+@ColumnName+'')
exec('alter table ['+@TableName+'] drop column '+@ColumnName+'')
exec sp_rename ''+@TableName+'.ck_id_id',@ColumnName,'column'
--自己原来的做法,这样新加的列中就没有数据了。
--先把自增列删除
--exec ('ALTER TABLE ['+@TableName+'] DROP COLUMN '+@ColumnName+'')
--再添加非自增列
--exec ('ALTER TABLE ['+@TableName+'] alter column '+@ColumnName+' [int] NULL')
fetch next from mycursor2 into @ColumnName
end
end
--关闭游标
close mycursor2
--撤销游标
deallocate mycursor2
--用游标去取下一条记录
fetch next from mycursor1 into @TableName
end
--关闭游标
close mycursor1
--撤销游标
deallocate mycursor1

改int非空自增列为int可为空列的更多相关文章

  1. 【转】int && 非常量右值

    C++ 11中引入的右值引用正好可用于标识一个非常量右值.C++ 11中用&表示左值引用,用&&表示右值引用,如: int &&a = 10 右值引用根据其修饰 ...

  2. 请编写一个方法,返回某集合的所有非空子集。 给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异。各子集内部从大到小排序,子集之间字典逆序排序,见样例。

    题解:观察测试样例,会发现每个子集的选择规律与二进制((2^n) - 1)到 1 的顺序生成的规律是一致的,样例中n=3,2^n-1=7,用二进制表示为111,其中每一位的1表示数组中的三个数都选择. ...

  3. 深度优先搜索(DFS)递归形式改为非递归形式

    DFS将递归改为非递归这个方法的需求来自于一道三维积木组合的题目,还在苦苦调试中,暂且不提. 普通的认识对于递归向非递归的转化无非是使用栈,但是结合到深度搜索如何将栈很好利用,如何很好保存现场,都不是 ...

  4. SQLSever语句(增、删、改、查)一、增:有4种方法1.使用insert插入单行数据

    SQL语句(增.删.改.查) 一.增:有4种方法 1.使用insert插入单行数据: 语法:insert [into] <表名> [列名] values <列值> 例:inse ...

  5. "int?" 是什么类型?和"int"有何区别

    int?:表示可空类型,就是一种特殊的值类型,它的值可以为null用于给变量设初值得时候,给变量(int类型)赋值为null,而不是0int??:用于判断并赋值,先判断当前变量是否为null,如果是就 ...

  6. C# Windows Phone 8 WP8 开发,将WebClient的DownloadStringCompleted事件改成非同步的awiat方法。

    原文:C# Windows Phone 8 WP8 开发,将WebClient的DownloadStringCompleted事件改成非同步的awiat方法. 一般我们在撰写Windows Phone ...

  7. 把Oracle由归档模式改为非归档模式

    把Oracle由归档模式改为非归档模式 开始–>运行命令cmd进入命令行模式 1. 使用命令sqlplus以无日志形式打开如下: sqlplus /nolog; 2. 连接数据库dev.worl ...

  8. C++中int转string与string转int

    #include "stdafx.h" #include "string" #include "iostream" #include &qu ...

  9. 转:int整数除以int整数一定得到的是int整数(易忽视)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u014053368/article/de ...

随机推荐

  1. Apple Special Event, October 2013 (1080p)(苹果发布会)

    Apple iPhone 5C(16G) 3G智能手机(粉色 北京联通惊喜合约价3899,购机送费含200话费,率先上市,限量抢购)

  2. [LintCode] Maximal Rectangle 最大矩形

    Given a 2D boolean matrix filled with False and True, find the largest rectangle containing all True ...

  3. centos7 服务管理

    服务脚本位置: /usr/lib/systemd/system  (开机不登录就能够运行的服务) /usr/lib/systemd/user      (用户登录后才能运行的服务) 服务脚本示例: [ ...

  4. Python的缩进

    关于python的缩进:如果要确认一个函数包含哪些内容,java或php可以使用大括号将函数内容包含起来,但python里没有那样的大括号,python靠“缩进”(四个空格)来确定语句块的始末. 这是 ...

  5. 第 6 章 贴近servlet

    服务器在获得请求的时候会先根据jsp页面生成一个java文件,然后使用jdk的编译器将此文件编译,最后运行得到的class文件处理用户的请求返回响应.如果再有请求访问这jsp页面,服务器会先检查jsp ...

  6. asp.net自定义404页面

    网上有很多方法,不过大体相同,这只是其中一个方法,亲测有效,记录后面可能会有用 1. 先写好一个404页面 404.aspx在项目根目录下 然后在配置文件中添加 <!-- 注意这个模式,redi ...

  7. window.open()&&window.showmodaldialog()

    open 打开一个新窗口,并装载URL指定的文档,或装载一个空白文档,如果没提供URL的话. 适用于 窗口 语法 window = object.open([URL[,name[,features[, ...

  8. 函数响应式编程(FRP)—基础概念篇

    原文出处:http://ios.jobbole.com/86815/. 一函数响应式编程 说到函数响应式编程,就不得不提到函数式编程,他们俩有什么关系呢?今天我们就详细的解析一下他们的关系. 现在下面 ...

  9. iOS 导入第三方文件夹时右侧出现问号

    首先,和版本库有关. a代表add,m代表modify,?代表未能识别,通常如果使用git之类的版本控制器,添加文件后没有进行提交,就会出现? 1.遇到引用文件夹为蓝色的情况,是你以为勾了copy项, ...

  10. SpringBoot项目部署与服务配置

    spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动.其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat).当然你也可以将项 ...