Столбец с ненулевым значением допускает пустые строки ('') - PullRequest
0 голосов
/ 03 апреля 2019

Я хочу, чтобы строка была как NULL, даже если значение, указанное во время вставки, равно ('', ''). Но теперь, когда я вставляю вот так, она вставляет пустую строку в ненулевой столбец.Я пытался изменить таблицу, но она не работает.

alter table Organization add check (org_name != '')

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

1 Ответ

0 голосов
/ 03 апреля 2019

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

USE TEMPDB
CREATE TABLE #Org (ID INT, org_name VARCHAR (100) NOT NULL)

CREATE TABLE #Source (ColA INT, ColB VARCHAR (10))
INSERT INTO #Source VALUES (1, 'A'), (2, '')

INSERT INTO #Org
SELECT ColA,
      NULLIF (ColB, '')
FROM #Source

DROP TABLE #Org, #Source

-- Msg 515, Level 16, State 2, Line 8
-- Cannot insert the value NULL into column 'org_name', table 'tempdb.dbo.#Org________________________________________________________________________________________________________________000000002F34'; column does not allow nulls. INSERT fails.
-- The statement has been terminated.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...