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$