即使插入期间给定的值为('',''),我也希望该行为NULL 但是现在当我这样插入时,它将在非null列中插入空白行。 我试图更改表格,但不起作用。
alter table Organization add check (org_name != '')
当我尝试在非null列中插入空白值时,我希望输出拒绝该条目。
答案 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.