2014-02-04 3 views
-1

Я пытаюсь изучить SQL Server, и я занимаюсь INSERT INTO.Почему возникает ошибка при вставке в таблицу SQL Server?

Когда я пытаюсь ввести этот запрос, он выдает сообщение об ошибке, указывающее, что [Intern_DB2].[dbo].[MY_Parcels] является недопустимым объектом.

У меня не было проблем с созданием этой таблицы, почему она говорит о ее недействительности внезапно?

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

Я незнаком с MS SQL, но похоже, что вы пытаетесь вставить значения 2/3 в один. Каков был ваш оператор CREATE TABLE? –

+0

Вы уверены что вы делаете в базе данных, где вы выполняете запрос? – Shiva

+1

Ваш запрос выше ошибочен, поскольку он вставляет два значения в одно поле «ID», но это не объясняет ошибку недопустимого объекта. Вы подключены к соответствующему серверу? –

ответ

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 

После того, как вы убедились, что таблицы существует, просто исправьте количество значений, переданных в VALUES claues вашего оператора insert, и оно должно работать.

+0

Вы нашли мою ошибку. Я не могу понять, почему, но его утверждение, что таблица не существует, несмотря на то, что она отображается в моем диспетчере объектов. –

2

Вы должны убедиться, что таблица создается внутри [INTERN_DB2] базы данных, которые вы указываете в вашем заявлении вставки.

Найдите свой стол с помощью графического интерфейса пользователя, щелкните правой кнопкой мыши 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 
Смежные вопросы