我正在尝试学习SQL Server,而我正在练习INSERT INTO
。
当我尝试输入此查询时,会抛出错误,指出[Intern_DB2].[dbo].[MY_Parcels]
是无效对象。
我创建这个表没有问题,为什么它突然说它无效?
Insert INTO [INTERN_DB2].[dbo].[My_Parcels] (ID)
Values (000065, N'test')
答案 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