以下 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。
有解释吗?
先感谢您 !
影音