简体   繁体   中英

Msg 207, Level 16, State 1 "Invalid column name 'Name'"

I'm trying to drop and recreate a table with a new schema in SQL Server, and then insert some test data into it to validate that it's working correctly. I have the following 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
);

and the following insert statement:

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

Whenever I attempt to insert the aforementioned row, I get an error:

Msg 207, Level 16, State 1, Line 38 Invalid column name 'Name'.

Msg 207, Level 16, State 1, Line 38 Invalid column name 'Description'.

I know the table is there since I can SELECT * FROM Product and get an empty result set with the correct columns and no errors... I just can't insert into it for some reason. Any help would be greatly appreciated!

As per Martin's answer, I did some more research and he is correct. The schema manipulation needs to be done in separate batches (I simply added a GO after dropping my old table and after creating my new one with a different schema). A more detailed answer can be found here: "Invalid column name" error when calling insert after table created

For me, your query looks good, and i test it successfully.

Try adding schema name and put all column name inside brackets:

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');

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

Maybe try refreshing the cache. Easy way is to press Ctrl + shift + R

Or

Edit > IntelliSense > Refresh Local Cache

If doesnt work, then use qualified names [dbo].table or username.tablename etc

More here: http://msdn.microsoft.com/en-us/library/ms174205.aspx

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM