新建这么一个表:
CREATE TABLE Employees
(
    EmployeeID      int         IDENTITY     NOT NULL,
    FristName       varchar(25)              NOT NULL,
    MiddleInitial   char(1)                  NULL,
    LastName        varchar(25)              NOT NULL,
    Title           varchar(25)              NOT NULL,
    SSN             varchar(11)              NOT NULL,
    Salary          money                    NOT NULL,
    PriorSalary     money                    NOT NULL,
    LastRaise  AS Salary - PriorSalary,
    HireDate        smalldatetime            NOT NULL,
    TerminationDate smalldatetime            NULL,
    ManagerEmpID    int                      NOT NULL,
    Department      varchar(25)              NOT NULL    
)
再向这个表插入一条记录:
INSERT INTO Employees
    (    
    FirstName,
    LastName,
    Title,
    SSN,
    Salary,
    PriorSalary,
    HireDate,
    ManagerEmpID,
    Department
)
VALUES
    (   
    'Billy Bob',
    'Boson',
    'Head Cook & Bottle Washer',
    '123-45-6789',
    100000,
    80000,
    '1990-01-01',
    1,
    'Cooking and Bottling'
)此时系统报错:
消息 515,级别 16,状态 2,第 1 行
不能将值 NULL 插入列 'EmployeeID',表 'Accounting.dbo.Employees';列不允许有空值。INSERT 失败。标识列不是系统分配的吗?为什么还要显式插入数值呢?小鸟恳请各位大虾指教。

解决方案 »

  1.   


    EmployeeID      int        IDENTITY(1,1)    NOT NULL, 
      

  2.   

    CREATE TABLE Employees
    (
        EmployeeID      int        IDENTITY    NOT NULL,
        FirstName      varchar(25)              NOT NULL,
        MiddleInitial  char(1)                  NULL,
        LastName        varchar(25)              NOT NULL,
        Title          varchar(25)              NOT NULL,
        SSN            varchar(11)              NOT NULL,
        Salary          money                    NOT NULL,
        PriorSalary    money                    NOT NULL,
        LastRaise  AS Salary - PriorSalary,
        HireDate        smalldatetime            NOT NULL,
        TerminationDate smalldatetime            NULL,
        ManagerEmpID    int                      NOT NULL,
        Department      varchar(25)              NOT NULL   
    ) INSERT INTO Employees
        (   
        FirstName,
        LastName,
        Title,
        SSN,
        Salary,
        PriorSalary,
        HireDate,
        ManagerEmpID,
        Department
    )
    VALUES
        ( 
        'Billy Bob',
        'Boson',
        'Head Cook & Bottle Washer',
        '123-45-6789',
        100000,
        80000,
        '1990-01-01',
        1,
        'Cooking and Bottling'
    ) DROP TABLE Employees/*(1 行受影响)*/
      

  3.   

    你的firstname列写错外.没发现问题.
      

  4.   

    CREATE TABLE
        [ database_name.[ owner ] .| owner.] table_name
        ( { < column_definition >
            | column_name AS computed_column_expression
            | < table_constraint > ::= [ CONSTRAINT constraint_name ] }            | [ { PRIMARY KEY | UNIQUE } [ ,...n ]
        ) [ ON { filegroup | DEFAULT } ] 
    [ TEXTIMAGE_ON { filegroup | DEFAULT } ] < column_definition > ::= { column_name data_type }
        [ COLLATE < collation_name > ]
        [ [ DEFAULT constant_expression ]
            | [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
        ] 
        [ ROWGUIDCOL]
        [ < column_constraint > ] [ ...n ] 
      

  5.   


    消息 207,级别 16,状态 1,第 2 行
    列名 'FirstName' 无效。
    调整后没有问题。顺利插入。