alter 修改数据表列名 sqlserver2005

时间:2022-03-16 07:17:03
我想修改数据表userInf中列名userName为 用户名 于是用了下面这个语句:

EXEC sp_rename 'userInf.[userName]', '用户名', 'COLUMN'

但是出现提示:

警告: 更改对象名的任一部分都可能会破坏脚本和存储过程。

不知道这样做会不会对程序造成什么影响,想上来问一下,希望各位高手指点指点。

我的想法:如果alter修改列名,将原有的列删除,再重新插入,这样的话这一列原有的数据将丢失,很苦恼。不知道什么样的方法才是正确的。

 

12 个解决方案

#1


自己先顶起来

#2



EXEC sp_rename '表名.列名','新列名','column'

#3


引用 2 楼 wiki14 的回复:
SQL code

EXEC sp_rename '表名.列名','新列名','column'


正解

#5


以上两位都没有理解我的意思

#6


create table userInf
(
  userName nvarchar(20)
)
insert into userInf select 'aa'
insert into userInf select 'bb'
insert into userInf select 'cc'


exec sp_rename 'userInf.userName','用户名','column'

select * from userInf

用户名
--------------------
aa
bb
cc

(3 行受影响)

#7


引用 5 楼 xulili123 的回复:
以上两位都没有理解我的意思

只是警告而已
它是担心万一有程序引用这个旧列名,
但现在改拉,那程序就会出错而已

#8


表自身的数据不会丢失这个你不用担心,只是要考虑你以前其他地方的引用

#9


嗯,表自身的数据不会丢失就好,至于其他地方的引用,我会在重命名的同时,将关联的地方都修改过来就行了。

#10


引用 5 楼 xulili123 的回复:
以上两位都没有理解我的意思

添加一个列,把要改变列名的数据拷贝一份到新建的列中,然后把旧的列删除,然后新建一个新的列,把数据拷贝回去,然后删除第一次新建的列。不就可以了啊,就是有点麻烦。

#11


引用 9 楼 xulili123 的回复:
嗯,表自身的数据不会丢失就好,至于其他地方的引用,我会在重命名的同时,将关联的地方都修改过来就行了。


你自己都给出答案了
如果这样,就啥关系也没有

#12


谢谢各位了

#1


自己先顶起来

#2



EXEC sp_rename '表名.列名','新列名','column'

#3


引用 2 楼 wiki14 的回复:
SQL code

EXEC sp_rename '表名.列名','新列名','column'


正解

#4


#5


以上两位都没有理解我的意思

#6


create table userInf
(
  userName nvarchar(20)
)
insert into userInf select 'aa'
insert into userInf select 'bb'
insert into userInf select 'cc'


exec sp_rename 'userInf.userName','用户名','column'

select * from userInf

用户名
--------------------
aa
bb
cc

(3 行受影响)

#7


引用 5 楼 xulili123 的回复:
以上两位都没有理解我的意思

只是警告而已
它是担心万一有程序引用这个旧列名,
但现在改拉,那程序就会出错而已

#8


表自身的数据不会丢失这个你不用担心,只是要考虑你以前其他地方的引用

#9


嗯,表自身的数据不会丢失就好,至于其他地方的引用,我会在重命名的同时,将关联的地方都修改过来就行了。

#10


引用 5 楼 xulili123 的回复:
以上两位都没有理解我的意思

添加一个列,把要改变列名的数据拷贝一份到新建的列中,然后把旧的列删除,然后新建一个新的列,把数据拷贝回去,然后删除第一次新建的列。不就可以了啊,就是有点麻烦。

#11


引用 9 楼 xulili123 的回复:
嗯,表自身的数据不会丢失就好,至于其他地方的引用,我会在重命名的同时,将关联的地方都修改过来就行了。


你自己都给出答案了
如果这样,就啥关系也没有

#12


谢谢各位了