如何用代码改变字段的数据类型?

sql$ = "ALTER TABLE 档案库 ALTER COLUMN 年龄 VARCHAR(10) not NULL default '0'"

conn.Execute sql$

档案库 表中 年龄 字段 原为 smallint 长度为2 非空,现我想用上面代码将它改为VARCHAR(10) 可为空,通不过总是提示错误,请高手指点

---------------------------------------------------------------

sql$ = "ALTER TABLE 档案库 ALTER COLUMN 年龄 VARCHAR(10) NULL "

---------------------------------------------------------------

ALTER TABLE 档案库 ALTER COLUMN 年龄 VARCHAR(10) NOT NULL

我这里可以的。
你再试试?

---------------------------------------------------------------

别改了!
sql$ = "ALTER TABLE 档案库 Add COLUMN 年龄1 VARCHAR(10) not NULL default '0'"

conn.Execute sql$

sql$ = " update 档案库 set 年龄1=cast(年龄 as VARCHAR(10))"

conn.Execute sql$

sql$ = "ALTER TABLE 档案库 drop COLUMN 年龄"

conn.Execute sql$

sql$ = "exec sp_rename '档案库.年龄1','年龄', 'COLUMN'"

conn.Execute sql$

---------------------------------------------------------------

1。从smallint 字段到VARCHAR不能直接修改
2。可以先增加一个VARCHAR(10)字段
3。用UPDATE将数据从smallint 字段导到VARCHAR(10)字段
4。将smallint 字段清空
5。删除smallint 字段
---------------------------------------------------------------

可以给数据库的用户指定对每个对象的权限。在企业管理器中可以查看表的属性来修改。
---------------------------------------------------------------

你的字段有外键的约束,要先修改主键。
---------------------------------------------------------------

先去约束,然后修改。
ALTER TABLE 档案库
with nocheck //或者用nocheck constraint all
ALTER COLUMN 年龄 VARCHAR(10) not NULL default '0'

---------------------------------------------------------------

ALTER TABLE 档案库 modify COLUMN 年龄 VARCHAR(10) not NULL default '0'
---------------------------------------------------------------

yxsalj(落入水里的石头) 说得对:先去约束,然后修改。

sql$ = "ALTER TABLE 档案库 drop CONSTRAINT [DF_档案库_年龄]"
conn.Execute sql$
sql$ = "ALTER TABLE 档案库 ALTER COLUMN 年龄 VARCHAR(10) not NULL"
conn.Execute sql$

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus