Windows 8.1的SQL Server Express中创建表后插入数据报错求助
排查并解决SQL插入错误的方案
咱们来一步步拆解你遇到的问题:
错误原因分析
你碰到的两个Msg 207错误,根源主要有两个:
- 字符串值未加单引号:SQL Server里,字符串类型的字段值必须用单引号(
')包裹。你写的Omereji没加引号,数据库会误以为这是一个列名,所以抛出“Invalid column name 'Omereji'”的错误。 - 自增列不应手动插入值:你的
CSCFileNumberId是IDENTITY自增主键,默认情况下数据库会自动为这个列生成递增的数值,不需要你在INSERT语句里指定它。这个问题虽然没直接抛出对应报错,但可能干扰了SQL解析逻辑,间接导致了第二个“Invalid column name 'SurName'”的异常。
修正后的SQL语句
把这两个问题修复后,正确的代码应该是这样的:
CREATE TABLE Promotions ( CSCFileNumberId INTEGER IDENTITY PRIMARY KEY, SurName VARCHAR(30), DateofFirstAppointment INTEGER, InterviewScore INTEGER ); INSERT INTO Promotions (SurName, DateofFirstAppointment, InterviewScore) VALUES ('Omereji', 098761, 45);
额外注意事项
- 如果确实需要手动给
IDENTITY列插入指定值(比如数据迁移场景),需要先执行以下语句开启IDENTITY_INSERT权限,插入完成后再关闭:
SET IDENTITY_INSERT Promotions ON; -- 这里执行包含CSCFileNumberId的INSERT语句 SET IDENTITY_INSERT Promotions OFF;
- 另外,
DateofFirstAppointment字段你定义为INTEGER类型,看起来像是日期相关的数据,建议改用DATE或DATETIME类型,这样更符合数据语义,也方便后续做日期筛选、计算等操作。
内容的提问来源于stack exchange,提问作者9codes
相关产品推荐
相关产品推荐

