表中没记录:
alter table t_aa add bb tinyint not null
会报错。有方法吗??

解决方案 »

  1.   

    alter table t_aa add bb tinyint not null default 0
      

  2.   

    说明:在alter表时,列如果设置为not null,需要指定默认值。因为在表如果有记录,如下:tb
    id name
    1  aa
    2  bb
    此时增加列bb
    id name bb
    1  aa
    2  bb
    在加列时,设置bb为not null,那么此时不指定默认值, sql并不知道给bb列插什么值。
      

  3.   

    表中有没有记录都没有关系,出错信息应该写很清楚了如果要添加一列NOT NULL的,必须指定一个Default值
      

  4.   

    --给个默认值.
    alter table 表 add bb tinyint not null default 0
      

  5.   

    我想你误解我的意思了。
    我没有说表中有记录SQL才报错。
    而是说SQL报错的原因是考滤到这种情况,所在不管有没有记录,在alter时设置not null列不指定default value就报错。 他才不会去检测你表是否有记录。
      

  6.   

    错误信息:
    服务器: 消息 4901,级别 16,状态 1,行 1
    ALTER TABLE 只允许添加可包含空值或指定了 DEFAULT 定义的列。因为列 'bb' 不能包含空值且未指定 DEFAULT 定义,所以无法将该列添加到表 't_aa' 中。
    不论表中是否有数据,如果要添加一列NOT NULL的,必须指定一个Default值。alter table t_aa add bb tinyint not null default 0--或者,如果不想设置默认值,可以:对于表中无记录时,可以拆分成两条SQL:alter table t_aa add bb tinyint
    go
    alter table t_aa alter column bb tinyint not null
    go对于表中有记录时,可以拆分成三条SQL:alter table t_aa add bb tinyint
    goupdate t_aa set bb=0   --更新bb的值alter table t_aa alter column bb tinyint not null
    go