• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    解析如何用SQL语句在指定字段前面插入新的字段
    create proc addcolumn
    @tablename varchar(30), --表名
    @colname varchar(30), --要加的列名
    @coltype varchar(100), --要加的列类型
    @colid int --加到第几列
    as

    declare @colid_max int
    declare @sql varchar(1000) --动态sql语句
    --------------------------------------------------
    if not exists(select 1 from sysobjects
    where name = @tablename and xtype = 'u')
    begin
    raiserror 20001 '没有这个表'
    return -1
    end
    --------------------------------------------------
    if exists(select 1 from syscolumns
    where id = object_id(@tablename) and name = @colname)
    begin
    raiserror 20002 '这个表已经有这个列了!'
    return -1
    end
    --------------------------------------------------
    --保证该表的colid是连续的
    select @colid_max = max(colid) from syscolumns where id=object_id(@tablename)

    if @colid > @colid_max or @colid 1
    set @colid = @colid + 1
    --------------------------------------------------
    set @sql = 'alter table '+@tablename+' add '+@colname+' '+@coltype
    exec(@sql)

    select @colid_max = colid
    from syscolumns where id = object_id(@tablename) and name = @colname
    if @@rowcount > 1
    begin
    raiserror 20003 '加一个新列不成功,请检查你的列类型是否正确'
    return -1
    end
    --------------------------------------------------
    --打开修改系统表的开关
    EXEC sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE

    --将新列列号暂置为-1
    set @sql = 'update syscolumns
    set colid = -1
    where id = object_id('''+@tablename+''')
    and colid = '+cast(@colid_max as varchar(10))
    exec(@sql)

    --将其他列的列号加1
    set @sql = 'update syscolumns
    set colid = colid + 1
    where id = object_id('''+@tablename+''')
    and colid >= '+cast(@colid as varchar(10))
    exec(@sql)

    --将新列列号复位
    set @sql = 'update syscolumns
    set colid = '+cast(@colid as varchar(10))+'
    where id = object_id('''+@tablename+''')
    and name = '''+@colname +''''
    exec(@sql)
    --------------------------------------------------
    --关闭修改系统表的开关
    EXEC sp_configure 'allow updates',0 RECONFIGURE WITH OVERRIDE
    go 

    调用方法:
    exec addcolumn '表名','新列名','新列类型',加到第几个位置
    如:
    exec addcolumn 'test','id2','char(10)',2
    表示将id2这个列加到表test的第二个位置,类型是char(10)。
    上一篇:sql实现修改表字段名的方法详解
    下一篇:sqlserver 不能将值NULL插入列id(列不允许有空值解决)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    解析如何用SQL语句在指定字段前面插入新的字段 解析,如,何用,SQL,语句,在,