Добавить предопределенное значение по умолчанию для столбца в T-SQL - PullRequest
5 голосов
/ 21 марта 2012

Я пытаюсь что-то проверить, и у меня возникает проблема, связанная с тем, что я не могу привязать столбец по умолчанию к столбцу.

Моя цель состоит в том, чтобы изменить столбец и прикрепить к этому столбцу предопределенное значение по умолчанию True.

Что я делаю не так?

CREATE default [dbo].[True] as (1)
GO

CREATE TABLE dbo.aaa ( column_a INT, column_b char(1)) ;
GO

INSERT INTO dbo.aaa (column_a)VALUES ( 7 ) ;
GO

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT [dbo].[True] FOR column_b ;
GO

INSERT INTO dbo.aaa (column_a) VALUES ( 10 ) ;
GO

SELECT * FROM dbo.aaa ;
GO

DROP TABLE dbo.aaa ;
GO

В этом примере я получаю сообщение об ошибке в строке ALTER TABLE

Сообщение 128, уровень 15, состояние 1, строка 1

Имя "dbo.True "не допускается в этом контексте.Допустимые выражения - это константы, константные выражения и (в некоторых контекстах) переменные.Имена столбцов не допускаются.

Ответы [ 2 ]

1 голос
/ 22 марта 2012

Если вы хотите, чтобы для вашего столбца по умолчанию было «1», почему бы вам не попробовать это:

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT '1' FOR column_b ;

Ваше значение по умолчанию называется True. Если единственными возможностями являются True или False, то вам, вероятно, следует изменить тип с char (1) на bit. И заявление alter станет:

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT 1 FOR column_b ;
0 голосов
/ 21 марта 2012

Нет синтаксиса для привязки предопределенных значений по умолчанию.Вам нужно использовать хранимую процедуру :

sp_bindefault 'True', 'dbo.aaa.column_b'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...