SQL怎么增加一条身份z号码字段?

SQL怎么增加一条身份z号码字段?,第1张

大致是这样:

<tablename>换成你的表名,

idcard是我起的身份z号字段名;

字段类型我用的是varchar,看你自己的需求。

alter table <tablename>add idcard varchar(18)

方法1:修改表定义,加入年份

方法2:写存储过程

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


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11869167.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存