суббота, августа 19, 2006

Шутки от MS SQL Server - 2

(по крайней мере, MS SQL 2005 так шутит)

Выяснилось, что даже при указании для некоторого NOT NULL поля таблицы значения по умолчанию в это поле нельзя записывать null.

Т.е., если поле col1 определено как NOT NULL default ('anystring'), то нельзя написать INSERT INTO (col0, col1) VALUES (@p0, @p2) и параметру @p2 присвоить null (DBNull.Value). Тут получится выкидыш-exception - низя в такое поле совать NULL. В этой ситуации поле нужно вовсе в списки не упоминать, тогда ему будет присвоено значение по умолчанию.

Как-то это неочевидно, а в BOL если и написано об этом, то где-то весьма далеко - специально искал, да не нашёл.

5 комментариев:

Анонимный комментирует...

По-моему так было всегда :)

DkmS комментирует...

Может, и всегда, но почему ж не поправить-то?

Анонимный комментирует...

Потому что так правильней. Null это значение, а не команда применить умолчание.

DkmS комментирует...

Null, вообще-то - отсутствие значения. В бейсике даже называется Nothing.

DkmS комментирует...

Получается, что так. :-(
Атавизьм какой-то...