SybaseDB,更改表中现有列的默认值

时间:2010-09-29 17:42:42

标签: sql database default sybase

我有一个名为“downloads”的表,里面有几千行。我刚刚使用以下命令添加了一个名为is_completed的列:

ALTER TABLE downloads ADD is_completed BIT default 1 NOT NULL

现在我想将is_completed的默认值更改为0 - 我试过这个命令无济于事:

ALTER TABLE downloads MODIFY is_completed default 0

这不起作用,它说我的语法接近默认值不正确。我似乎无法谷歌这为我的生活。有人知道正确的语法吗?我希望添加到此表的所有未来行都将is_completed默认为0(如果省略显式值)。

4 个答案:

答案 0 :(得分:15)

要更改默认值,您需要使用替换而不是修改:

alter table downloads replace is_completed default 0

如果您需要更改数据类型或null / not null,则应使用

alter table t modify c

答案 1 :(得分:0)

在SQL Server中,您将使用ALTER TABLE ... DROP CONSTRAINT,然后使用ALTER TABLE ... ADD CONSTRAINT。据推测,Sybase会有类似的东西吗?

答案 2 :(得分:0)

1)将所有行的PKs(其中is_completed = 1)拉入另一个表中或执行以下操作:

SELECT
    'UPDATE downloads SET is_completed is = 1 WHERE PK='+CONVERT(varchar(10),PK)
    FROM downloads

保存此输出,以便您以后可以运行它,如果您的原始表只有a few thousand rows那么这不应该那么大
2)放下柱子 3)使用您现在想要的默认值添加列 4)从上面的查询运行保存的输出,或者使用连接UPDATE下载表到用于存储is_completed = 1的行的表

答案 3 :(得分:-1)

删除列并重新添加。