Отмечание сохраненных вычисляемых столбцов NOT NULL в Studio управления SQL Server

В SQL Server 2005 возможно создать вычисляемый столбец, который и сохраняется и определяется как NOT NULL (не может содержать нулевое значение). 2-й атрибут важен при пользовании библиотеками как Linq2Sql, если мы хотим избежать большого физического труда, чтобы гарантировать наш код, что столбец 'всегда' имеет значение.

С прямым SQL это очень просто:
ALTER TABLE Sales ADD Total AS (Price + Taxes) PERSISTED NOT NULL

При просмотре в окне дизайна студии управления SQL Server этот столбец правильно показывается вычисляемым столбцом без галочки для, 'позволяет, аннулирует'. Однако я сталкиваюсь с проблемой, создающей новые столбцы в разработчике для соответствия этому шаблону: формула вводится в свойство Computed Column Specification-> (Formula), и сохраненное свойство указано установкой Is Persisted к Да, но пытающийся снять флажок 'позволяет, аннулирует' на новых результатах вычисляемого столбца в диалоговом свойстве "Утверждения, не может быть изменен".

Я должен покрыть широкий спектр уровней квалификации, и сделать так я должен предоставить процедуры добавления столбцов, за которыми даже новичок может следовать (что означает окно разработчика Studio управления). Разве существует ли некоторый секрет в Studio управления SQL Server для создания нового вычисляемого столбца как NOT NULL в разработчике, подобном, чтобы сказать, как CTRL+0 может использоваться для вставки, аннулирует в ячейки?

16
задан Marcel 3 July 2019 в 13:36
поделиться

4 ответа

В javascript «функция» является примитивным типом переменной, который может иметь переменная. Javascript также неплотно набран, поэтому значение переменной зависит от последнего, что ей было присвоено. «event» является только член переменной объекта окна. Таким образом, вы можете назначить его тому, что вам нравится. Если он никогда не был назначен чему-либо, он примет примитивное значение «undefined» в javascipt. Таким образом, проверка для:

if (typeof window.onload != 'function') {

действительно проверяет, был ли обработчик событий window.onload еще определен или нет.

Если он еще не определен, то эта функция назначает func обработчику событий window.onload (т.е. func будет вызван при загрузке окна).

Если она была определена ранее, то эта функция создаст новую функцию, которая вызовет существующий обработчик onload, а затем func при загрузке окна. В этом примере также используется свойство/language-feature javascript под названием «closure», так что вновь определенная функция «compose» имеет доступ к переменным выше своей области действия, которые сохраняются после того, как внешняя функция теряет область действия.

Возможно, более значимой проверкой будет:

if (typeof window.onload === 'undefined') {
-121--2801474-

Есть ли причина, по которой вы не переворачиваете порядок A и B? Когда вы плаваете что-то прямо с текстом, порядок инвертируется.

-121--4780395-

Это можно изменить с помощью команды ISNULL (цена + налоги, 0) , которая использует значение по умолчанию 0 для вычислений NULL.

18
ответ дан 30 November 2019 в 17:27
поделиться

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

ALTER TABLE Sales ADD Total AS ISNULL(isnull(Price,0) + isnull(Taxes,0),0) PERSISTED NOT NULL
2
ответ дан 30 November 2019 в 17:27
поделиться

Согласно Эта статья Nullability определяется SQLSERVER на основе возможного значения вычисленного выражения. С Цена или или налогов , вероятно, нулевидно, нельзя убедиться, что их сумма никогда не нужна.

Однако, как показывает @Richard, используя метод Isnull . Объявление колонны Не нулевой , однако не нужно, насколько я понял.

1
ответ дан 30 November 2019 в 17:27
поделиться

Как баллографические заметки, это можно сделать с помощью ISNULL .

Я часто использую это для вычисленных флагов, например, в таблице User у меня есть DeletedDate, чтобы узнать, когда учетная запись была удалена. Затем я создаю вычисляемый необратимый булевый столбец под названием IsDeleted (бит типа), например:

isnull(case when DeletedDate is null then 0 else 1 end, 0)

Важно отметить, что ISNULL должен находиться в самой внешней части выражения, чтобы проектировщик понял, что это необратимый вычисляемый столбец.

11
ответ дан 30 November 2019 в 17:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: