为什么我尝试插入SQL Server表时出错?

时间:2014-02-04 20:33:33

标签: sql sql-server insert-into

我正在尝试学习SQL Server,而我正在练习INSERT INTO

当我尝试输入此查询时,会抛出错误,指出[Intern_DB2].[dbo].[MY_Parcels]是无效对象。

我创建这个表没有问题,为什么它突然说它无效?

Insert INTO [INTERN_DB2].[dbo].[My_Parcels] (ID)
Values (000065, N'test') 

2 个答案:

答案 0 :(得分:3)

您的查询有两个问题。

第一

Insert INTO [INTERN_DB2].[dbo].[My_Parcels] (ID)  --<-- Number of columns 1
Values (000065, N'test')                          --<-- Passed values for two columns

INSERT INTO语句中提到的列数必须与VALUES cluase中传递的值的数量相匹配。

第二次

您收到错误消息invalid object,这意味着您没有使用正确的表名,或者您已在其他数据库中创建该表并在其他数据库中查找

检查此尝试执行以下语句并查看表是否存在

USE INTERN_DB2
GO
SELECT * FROM [dbo].[My_Parcels]
GO

一旦确定表存在,只需更正insert语句的VALUES子句中传递的值的数量,它就可以工作。

答案 1 :(得分:2)

您必须确保在insert语句中指定的[INTERN_DB2]数据库中创建表。

使用GUI找到您的表格,右键点击选择Script table as,然后选择Drop and CREATE to,然后选择New query Editor window。一旦打开新的查询窗口,请验证第一行是否显示USE [INTERN_DB2],如果它说的是您在错误的数据库中创建的其他内容。

INSERT语句中,您列出了1列,但在VALUES中您指定了两列不同的列。如果要将值插入两列,则需要将它们列出,或者如果只有两列,则可以删除列并只添加值。这很危险,因为你正在接受订单。

USE AdventureWorks2008R2;
GO
INSERT INTO Production.UnitMeasure
VALUES (N'FT', N'Feet', '20080414');
GO

USE AdventureWorks2008R2;
GO
INSERT INTO Production.UnitMeasure (Name, UnitMeasureCode,
    ModifiedDate)
VALUES (N'Square Yards', N'Y2', GETDATE());
GO