Нужно ли указывать все поля во вставке? - PullRequest
3 голосов
/ 17 февраля 2010

При выполнении вставки, скажем, из C # в таблицу SQL Server (с использованием параметризованных операторов SQL), нужно ли указывать каждое поле таблицы в операторе вставки?

Я заметил, что поля, которые я не указываю при вставке, по умолчанию соответствуют значениям по умолчанию, установленным в таблице. Я не знаю, хорошо это или плохо в моем операторе вставки, чтобы пропустить поля и позволить настройкам по умолчанию позаботиться об установке полей, которые мне не нужны. Это должно быть хорошо, потому что это работает.

Ответы [ 6 ]

5 голосов
/ 17 февраля 2010

Вам необходимо указать все те поля, для которых вы хотите вставить значение.Вы не должны указывать все поля в таблице!

Как вы заметили, любое из полей, которые вы не указали и на них есть ограничение по умолчанию, будет установлено наэто определенное значение по умолчанию.Это "хорошая вещь" (тм) - точно!Это позволяет вам писать меньше кода вставки T-SQL - все заданные значения по умолчанию будут уже установлены.Я считаю, что это отличная особенность SQL Server (и многих других реляционных баз данных) - вы можете инициализировать такие вещи, как «дата последнего изменения» в полях «сегодня» при вставке, без необходимости специально добавлять эти поля в оператор INSERT..

Любые поля, которые не являются частью вашего оператора INSERT и не имеют определенного значения по умолчанию, останутся пустыми.

Любые поля, определенные как NOT NULL, должны быть либо частью списка полей в вашем операторе INSERT (чтобы вы указали им определенное значение NON NULL), либо они должны иметь ограничение по умолчанию для них,

2 голосов
/ 17 февраля 2010

Это не поведение, специфичное для C # или .NET.

В большинстве баз данных любые поля, которые пропущены в операторе INSERT, получают значения по умолчанию или, если они имеют значение NULL, сохраняются как NULL. Это стандартное и ожидаемое поведение.

Что касается того, хорошо это или плохо - это зависит . Лично я предпочитаю указывать значения всех полей в любой таблице, которую я вставляю, чтобы будущие сопровождающие поняли что я решил вставить значения намеренно . Однако в некоторых случаях существуют вычисления или столбцы на основе триггеров, которые приложение не может установить - в этом случае я разрешаю базе данных обрабатывать это.

Если вы действительно хотите быть точным и понятным - вы можете выполнить все свои ВСТАВКИ с помощью хранимых процедур - таким образом, знания фиксируются на уровне базы данных и могут быть использованы любыми приложениями, которые взаимодействуют с база данных.

0 голосов
/ 17 февраля 2010

Хорошо, если значения по умолчанию - это значения, которые являются правильными для вставляемой записи. Меня беспокоит то, что вы говорите о них как о областях, которые вас не волнуют. Вы должны заботиться о том, что входит в них; это может привести к серьезным проблемам с данными, чтобы не заботиться. Эти поля существуют по причине; Вы должны понимать, что означают значения по умолчанию и, если они уместны.

0 голосов
/ 17 февраля 2010

Это то, для чего существуют значения defaults. Они помогают вам

  • сэкономьте ваше время
  • избегайте написания ненужного кода
0 голосов
/ 17 февраля 2010

Хорошо посмотрев, как это работает, это нормально, если это то, чего вы хотите достичь. Если у вас есть пустые поля и поля со значениями по умолчанию, и вы ничего не можете в них вставить - это просто отлично.

0 голосов
/ 17 февраля 2010

Да, можно не указывать поля в операторе вставки, если значения по умолчанию достаточно хороши для вас.

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