设置为不为null的列允许空白行('')

时间:2019-04-03 07:39:39

标签: sql sql-server tsql

即使插入期间给定的值为('',''),我也希望该行为NULL 但是现在当我这样插入时,它将在非null列中插入空白行。 我试图更改表格,但不起作用。

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

当我尝试在非null列中插入空白值时,我希望输出拒绝该条目。

1 个答案:

答案 0 :(得分:0)

正如萨米指出的,真正的问题可能与您所怀疑的有所不同。解决方法是,可以使用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.