1

以下 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。

有解释吗?

先感谢您 !

影音

4

0 回答 0