设置DEFAULT值列后INSERT失败

Jon*_*han 0 sql t-sql sql-server

我将列添加到表中:

RedMarkItemsId (IDENTITY(1,1) NOT NULL PRIMARY KEY)
TaskId (UNIQUEIDENTIFIER)
CreationDate (DATETIME)
CreatedBy (UNIQUEIDENTIFIER)
Run Code Online (Sandbox Code Playgroud)

我想创建如下列:

  ALTER TABLE RedMarkItems ADD Item1 BIT DEFAULT(0)
Run Code Online (Sandbox Code Playgroud)

但是当我尝试插入一些值时:

INSERT INTO RedMarkItems 
VALUES (
    '9B093907-2072-4F59-A55C-0003CE89EF9E', 
    GETDATE(), 
    '6074CAEA-7A8E-4699-9451-16C2EAF394EF')
Run Code Online (Sandbox Code Playgroud)

它抛出错误:

列名或提供的值数与表定义不匹配.

如果我设置DEFAULT(0)为新列,为什么我会收到此错误?

表创建脚本:

CREATE TABLE RedMarkItems 
(
    RedMarkItemsId INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
    TaskId UNIQUEIDENTIFIER,
    CreationDate DATETIME,
    CreatedBy UNIQUEIDENTIFIER
)
Run Code Online (Sandbox Code Playgroud)

GMB*_*GMB 8

这段SQL无效:

INSERT INTO RedMarkItems 
VALUES (
    '9B093907-2072-4F59-A55C-0003CE89EF9E', 
    GETDATE(), 
    '6074CAEA-7A8E-4699-9451-16C2EAF394EF')
Run Code Online (Sandbox Code Playgroud)

如果未提供insert的所有列,则需要显式指定目标列.由于您只分配3列,您可能需要:

INSERT INTO RedMarkItems(
    RedMarkItemsId, 
    TaskId, 
    CreationDate
) VALUES (
    '9B093907-2072-4F59-A55C-0003CE89EF9E', 
    GETDATE(), 
    '6074CAEA-7A8E-4699-9451-16C2EAF394EF'
);
Run Code Online (Sandbox Code Playgroud)