SybaseDB, измените значение по умолчанию для существующего столбца в таблице - PullRequest
6 голосов
/ 29 сентября 2010

У меня есть таблица с названием «Загрузки» с несколькими тысячами строк. Я только что добавил столбец с именем 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 ]

15 голосов
/ 30 сентября 2010

Чтобы изменить значение по умолчанию, вам нужно использовать вместо замены:

alter table downloads replace is_completed default 0

Если вам нужно изменить тип данных или ноль / не ноль, тогда вы должны использовать

alter table t modify c
0 голосов
/ 29 сентября 2010

В SQL Server вы должны использовать ALTER TABLE ... DROP CONSTRAINT, а затем ALTER TABLE ... ADD CONSTRAINT. Предположительно, у Sybase было бы что-то подобное?

0 голосов
/ 29 сентября 2010

1) вытащить PK всех строк WHERE 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) запустить сохраненный вывод из вышеприведенного запроса, или ОБНОВИТЬтаблица загрузок с присоединением к таблице, используемой для хранения строк, где is_completed = 1

0 голосов
/ 29 сентября 2010

Оставьте столбец и добавьте снова.

...