ASE修改列的默认值属性

一、Sybase ASE中对表中已有的列修改默认值属性,使用命令:

alter table [database.][owner].table_name replace column_name default { constant_expression | user | null}

比如将表tmp1中dealtime字段设置成默认值为当前日期,使用:

alter table tmp1 replace dealtime default getdate()

删除列上的默认值属性:

将缺省值设置为null会删除缺省值,如: alter table tmp1 replace dealtime default null

二、修改字段的数据类型,使用命令:

alter table [database.][owner].table_name modify column_name datatype [null | not null] [, next_column]...

比如:将长度为30字节、为空的varchar类型字段name修改成不为空、20字节长的char类型

alter table tmp1 modify name char(20) not null

注意:字段长度变短时,截断字段的内容而不给出提示。可以一次修改多个字段的数据类型。

 

三、为表添加一个含有默认值的非空字段,使用:

alter table tmp1 add status char(1) default '0'  not null

为表添加字段的时候,字段必须为空,除非包含一个固定的默认值。类似上面的例子。

1> alter table t add dealtime datetime not null
2> go

Msg 4997, Level 16, State 1:
Server 'ase32bit', Line 1:
ALTER TABLE 't' failed. Default clause is required in order to add non-NULL
column 'dealtime'.

1> alter table t add dealtime datetime default getdate() not null
2> go

Msg 13918, Level 16, State 1:
Server 'ase32bit', Line 1:
ALTER TABLE 't' failed. Default cannot be an expression when adding non-NULL
column 'dealtime'. Use a default value instead.

1> alter table t add dealtime datetime default getdate() null
2> go

1>添加的字段默认值为表达式(也就是相对于添加字段时来说,默认的值是不确定的)时,值是

不确定的,必须使用null而不是not null。

四、创建表时,字段包含默认值,使用:
create table tmp2 ( id int not null,name varchar(30) null,status char(1) default '0' not null)

这个语句也是可以的:

create table tmp2 ( id int not null,name varchar(30) null, dealtime datetime default getdate() not null)

 

注意:

1.修改字段的默认值属性时,使用replace关键字而不是modify ;

2.给表添加字段时,该字段的是否为空属性必须为空,可以为其指定默认值;关于此条,可以参考博文:

sybase中给表增加和删除字段时内部处理过程分析

3.字段的是否为空属性和默认值属性没有直接的关系,也就是说不管字段是否为空,都可以为其添加默认值。

  • 本文链接地址:http://www.sybrepair.com/ase-alter-table-modify-column-default-value.htm
  • 本文为dbainfo个人原创,请在尊重作者劳动成果的前提下进行转载;
  • 转载务必注明原始出处 : Sybase数据库技术,数据库恢复专家
  • 对《ASE修改列的默认值属性》有何疑问或见解,请在本文下方发表;
  • 对网站还有其他问题或建议,请提交在留言板,谢谢!
  • 目前还没有任何评论.
    :wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)