在没有默认值的情况下添加非空列

时间:2013-05-31 06:42:50

标签: sybase sybase-ase

当我尝试添加此列时:

  

alter table APL ADD CODE NUMERIC(2)NOT NULL
  

我收到此错误:

  

ALTER TABLE' APL'失败。需要使用默认子句才能添加非NULL列“CODE”。   

我知道我可以添加默认值并且它会起作用,但我不想在这个coloumn中有一个默认值,我读了,我听说有一种方法可以添加默认的列。 有谁知道怎么样?


编辑:
我会更多地解释我的情况 这个列是错误地创建为NULL(我不知道为什么),它的主键部分(幸运的是我没有重复),所以我必须将它改为NOT NULL,所以我可以分配它。
它的真的是一个旧列,我不知道我应该添加什么样的默认值,因为如果我添加了错误的值,应用程序可能会导致问题。

2 个答案:

答案 0 :(得分:3)

我发现这个适合我的查询,对我来说似乎没问题。以前有人试过这个吗? 我将列添加为NULL,然后将其修改为非null。


  

alter table TEST_EMPLOYEE ADD COMP_CODE NUMERIC(4)NULL
  alter table TEST_EMPLOYEE MODIFY COMP_CODE NUMERIC(4)NOT NULL

答案 1 :(得分:2)

如果你认为你的要求是不可能的。

您希望指定“NOT NULL”,它告诉数据库每行必须有一个该列的值,数据库非常乐意为您提供现有行中列的默认值。< / p>

但是你不想提供默认值,那么数据库应该如何使现有行中的列“NOT NULL”?