Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Добавление новой колонки без указания NULL(NOT NULL) на SQL 2012  [new]
artii
Member

Откуда:
Сообщений: 104
Добавляю колонку в не пустой таблице, с собственным типом без указания NULL

На SQL Server 2008 проблемы нет на SQL Server 2012 появляется ошибка

ALTER TABLE only allows columns to be added that can contain nulls, or have a DEFAULT definition specified, or the column being added is an identity or timestamp column, or alternatively if none of the previous conditions are satisfied the table must be empty to allow addition of this column. Column 'acbd' cannot be added to non-empty table 'aaa' because it does not satisfy these conditions.

настройки:

databaseProperty('IsAnsiNullDefault') = false
SET ANSI_NULL_DFLT_ON ON

тип такой
CREATE DEFAULT [dbo].[MY_DEF_YN_FLAG] AS 'n'
GO
CREATE RULE [dbo].[MY_YN_VALUE] as (@value='y') or (@value='n')
GO
CREATE TYPE [dbo].[MY_YN_FLAG] FROM [char](1) NOT NULL
GO

sp_bindrule 'MY_YN_VALUE' , 'MY_YN_FLAG'
go
sp_bindefault 'MY_DEF_YN_FLAG' , 'MY_YN_FLAG'
go


тест такой
Create table aaa (
abc int
)
GO

insert into aaa (abc) values(1)
go

alter table aaa ADD acbd MY_YN_FLAG

И ошибка на SQL 2012


Ощущение что настройка SET ANSI_NULL_DFLT_ON ON не перегружает значение БД.
Или в чем-то другом причина?
9 дек 14, 10:15    [16970403]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой колонки без указания NULL(NOT NULL) на SQL 2012  [new]
artii
Member

Откуда:
Сообщений: 104
Все еще проще, при любых настройках

databaseProperty('IsAnsiNullDefault') = true
SET ANSI_NULL_DFLT_OFF OFF

или

databaseProperty('IsAnsiNullDefault') = false
SET ANSI_NULL_DFLT_OFF ON


ошибка на SQL 2012

в чем проблема не понимаю
9 дек 14, 10:45    [16970569]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой колонки без указания NULL(NOT NULL) на SQL 2012  [new]
artii
Member

Откуда:
Сообщений: 104
разобрался, проблема в
CREATE TYPE [dbo].[MY_YN_FLAG] FROM [char](1) NOT NULL
9 дек 14, 10:51    [16970599]     Ответить | Цитировать Сообщить модератору
 Re: Добавление новой колонки без указания NULL(NOT NULL) на SQL 2012  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8815
artii,

и что, создание пользовательского типа сильно облегчило сопровождение продукта?
9 дек 14, 12:55    [16971534]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить