Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Автоматически создаются констрейны - это норма?  [new]
FBuilder
Member

Откуда:
Сообщений: 29
Сижу на mssql 2005. Добавлял к таблице поле:
alter table Table1 add Column1 int Null default Null

И получил внезапно созданное ограничение с именем DF_Tabl_Colu_A7045GG или типа того. Зачем оно появилось и как впреть этого избежать?

Заранее спасибо.
24 апр 17, 16:48    [20430224]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
FBuilder,

его создали вот эти слова: "default Null".
24 апр 17, 16:55    [20430261]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
o-o
Guest
ам написал default, сам же и удивился созданию констрэйнта.
а что тогда хотел получить этим самым default?
чтобы избежать, не надо просить создание констрэйнта
24 апр 17, 16:55    [20430262]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
FBuilder
Member

Откуда:
Сообщений: 29
Кровь из глаз, как я мог незаметить... Копипаст проклятый..

Всем спасибо, можно закрывать тему.
24 апр 17, 16:56    [20430268]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3673
FBuilder
Сижу на mssql 2005. Добавлял к таблице поле:
alter table Table1 add Column1 int Null default Null

И получил внезапно созданное ограничение с именем DF_Tabl_Colu_A7045GG или типа того. Зачем оно появилось и как впреть этого избежать?

Заранее спасибо.


в чём скрытый смысл добавления такого дефолта?
и в чем разница между

alter table Table1 add Column1 int Null default Null
alter table Table1 add Column2 int Null

?
24 апр 17, 17:18    [20430332]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
msLex
Member

Откуда:
Сообщений: 7998
FBuilder
default Null

Я конечно чего-то могу не понимать, но зачем может потребовать такой дефолт?
Он же и так "по дефолту" работает без всяких констрейнтов.
Даже insert ... default values подставляет NULL для полей без дефолта.
24 апр 17, 17:21    [20430340]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7663
msLex
Он же и так "по дефолту" работает без всяких констрейнтов.


Нет, зависит от настроек.
24 апр 17, 18:06    [20430464]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Владислав Колосов
msLex
Он же и так "по дефолту" работает без всяких констрейнтов.


Нет, зависит от настроек.
Какие настройки, можно полюбопытствовать?
И NULL после int лишний, ЕМНИП
24 апр 17, 18:58    [20430558]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
msLex
Member

Откуда:
Сообщений: 7998
iap
Какие настройки, можно полюбопытствовать?

Тоже интересно.
24 апр 17, 21:31    [20430951]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
iap,

автор
И NULL после int лишний, ЕМНИП
тут как раз из настроек, ЕМНИП
25 апр 17, 08:57    [20431538]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
msLex
Member

Откуда:
Сообщений: 7998
TaPaK
iap,

автор
И NULL после int лишний, ЕМНИП
тут как раз из настроек, ЕМНИП

Каких?
25 апр 17, 09:15    [20431579]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
serpentariy
Member

Откуда:
Сообщений: 264
SET ANSI_NULL_DFLT_ON, SET ANSI_NULL_DFLT_OFF
25 апр 17, 09:26    [20431605]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
serpentariy,

точно :)
25 апр 17, 09:28    [20431606]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
msLex
Member

Откуда:
Сообщений: 7998
serpentariy
SET ANSI_NULL_DFLT_ON, SET ANSI_NULL_DFLT_OFF

Действительно.
Не зря я всегда явно NULL/NOT NULL для полей прописываю
25 апр 17, 10:43    [20431787]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
msLex
serpentariy
SET ANSI_NULL_DFLT_ON, SET ANSI_NULL_DFLT_OFF

Действительно.
Не зря я всегда явно NULL/NOT NULL для полей прописываю

по хорошему лучше писать чем не писать, но irl этот параметр никто не трогает, а если и тронет то включили и забыли
25 апр 17, 10:49    [20431818]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
msLex
Member

Откуда:
Сообщений: 7998
TaPaK
irl этот параметр никто не трогает, а если и тронет то включили и забыли


Представляю как полезут глаза на лоб у стороннего "читателя" кода, когда при "выключенном" is_ansi_null_default_on на уровне базы он увидит такой код
create table dbo.t (
	id int 
)
go

alter table dbo.t add constraint pk_t_id primary key (id)
go
25 апр 17, 11:04    [20431879]     Ответить | Цитировать Сообщить модератору
 Re: Автоматически создаются констрейны - это норма?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
msLex,

это очень внимательный сторонний читатель :) а по факту ни на что не влияет, если создался констрейн, то он будет nullable no и всё равно пофиг
25 апр 17, 11:16    [20431937]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить