消息207,级别16,状态1“无效的列名称'名称'”

时间:2019-02-15 23:06:30

标签: sql sql-server

我试图删除并使用SQL Server中的新架构重新创建表,然后在其中插入一些测试数据以验证其是否正常工作。我有以下DDL:

CREATE TABLE [dbo].[Product](
    [ID] int IDENTITY(1,1) PRIMARY KEY,
    [Name] VARCHAR(100) NOT NULL,
    [Description] VARCHAR(200) NULL,
    [Modified] DATETIME NOT NULL DEFAULT(GETUTCDATE()),
    [ModifiedBy] VARCHAR(32) NOT NULL
);

和以下插入语句:

INSERT INTO [dbo].[Product]([Name], [Description], [Modified], [ModifiedBy])
VALUES('Test', 'Description', GETUTCDATE(), 'Me');

每当我尝试插入上述行时,都会出现错误:

  

第207层,状态1,第38行,   无效的列名“名称”。

     

第207层,状态1,第38行,   无效的列名称“说明”。

我知道该表在那里,因为我可以SELECT * FROM Product并获得一个包含正确列且没有错误的空结果集……由于某种原因,我无法插入该表。任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:1)

按照马丁的回答,我做了更多的研究,他是正确的。模式操作需要分批完成(在删除旧表并使用其他模式创建新表之后,我只是添加了GO)。可以在这里找到更详细的答案:"Invalid column name" error when calling insert after table created

答案 1 :(得分:0)

对我来说,您的查询看起来不错,并且我测试成功。

尝试添加架构名称,并将所有列名称放在方括号中:

CREATE TABLE [dbo].[Product](
    [ID] int IDENTITY(1,1) PRIMARY KEY,
    [Name] VARCHAR(100) NOT NULL,
    [Description] VARCHAR(200) NULL,
    [Modified] DATETIME NOT NULL DEFAULT(GETUTCDATE()),
    [ModifiedBy] VARCHAR(32) NOT NULL
);

INSERT INTO [dbo].[Product]([Name], [Description], [Modified], [ModifiedBy])
VALUES('Test', 'Description', GETUTCDATE(), 'Me');

答案 2 :(得分:-1)

也许尝试刷新缓存。简单的方法是按Ctrl + shift + R

Edit > IntelliSense > Refresh Local Cache

如果不起作用,则使用限定名称[dbo] .table或username.tablename等

更多内容:http://msdn.microsoft.com/en-us/library/ms174205.aspx

答案 3 :(得分:-1)

不要做任何事情,只是尝试插入 (' ') 单引号而不是 (") 引号.. 或者如果您插入带有 ('') 单引号的数据,请尝试插入 (") 双引号,这确实对您有所帮助。

相关问题