以下transact-sql代码正常工作。它按预期填充了四个整数(0,1,2,3)。
CREATE TABLE [TBL_INTEGER] (
[ID] INTEGER IDENTITY ( 1, 1 ) PRIMARY KEY,
[NUMBER] INTEGER NOT NULL
)
DECLARE @MAX INTEGER
SELECT @MAX = 1000
WHILE ( 0 < @MAX ) BEGIN
INSERT [TBL_INTEGER] ( [NUMBER] ) SELECT ABS ( CHECKSUM ( NEWID () ) ) % 4
SELECT @MAX = @MAX - 1
END
并且以下代码没有。它无法生成'无法将值NULL插入列'NUMBER'错误。
CREATE TABLE [TBL_INTEGER] (
[ID] INTEGER IDENTITY ( 1, 1 ) PRIMARY KEY,
[NUMBER] INTEGER NOT NULL
)
DECLARE @MAX INTEGER
SELECT @MAX = 1000
WHILE ( 0 < @MAX ) BEGIN
INSERT [TBL_INTEGER] ( [NUMBER] )
SELECT
CASE ABS ( CHECKSUM ( NEWID () ) ) % 4
WHEN 0 THEN 0
WHEN 1 THEN 1
WHEN 2 THEN 2
WHEN 3 THEN 3
END
SELECT @MAX = @MAX - 1
END
如果我添加
ELSE 99
代码不会失败。但是插入行的三分之一包含值99。
有解释吗?
提前谢谢你!
AV