2010-06-25 2 views
1

Я пытаюсь создать правильные значения для созданных таблиц. Это код:Я пытаюсь вставить эти данные в SQL

INSERT DEPARTMENTS 
(Department_Id,Department_Name,Manager_Id,Location_Id) 
VALUES 
('D0001,D0002,D0003','Think Tank,Creators,Marketers',NULL,'L0001,L0002,L0003') 
GO 
INSERT EMPLOYEES 
(Employee_Id,First_Name,Last_Name,Email,PhoneNumber,Hire_Date,Manager_ID,Department_Id) 
VALUES 
('E0001,E0002,E0003,E0004,E0005,E0006,E0007','Joe,John,Sue,Tina,Ike,Big,Speedy','Blow,Doe,Happy,Turner,Turner,Bird,Gonzales',NULL,NULL,2010/06/25,2010/06/25,2010/06/25,2010/06/25,2010/06/25,2010/06/25,2010/06/25,NULL,NULL) 
GO 
INSERT LOCATIONS 
(Location_ID,Postal_Code,City,State_Province,Country) 
VALUES 
('L0001,L0002','19121,08618','Philadelphia,Trenton','PA,NJ','USA,USA') 

Это сообщение об ошибке: Msg 8152, уровень 16, состояние 14, строка 2 Строка или двоичные данные будут усечены. Заявление было прекращено. Msg 110, уровень 15, состояние 1, строка 1 В инструкции INSERT меньше столбцов, чем указано в предложении VALUES. Количество значений в предложении VALUES должно соответствовать количеству столбцов, указанных в инструкции INSERT. Msg 8152, уровень 16, состояние 14, строка 1 Строковые или двоичные данные будут усечены. Заявление было прекращено.

Я хотел бы знать, что я делаю неправильно и правильный код. Может кто-нибудь мне помочь? Спасибо

+0

Вы должны начать маркировочные ответы, как принято или люди перестанут отвечать –

+0

Спасибо за отзыв. На самом деле я не знал, что вам нужно нажать на галочку, чтобы отметить, как принято. Все ответы, которые я получил до сих пор, мне очень помогли. – getbruce

ответ

3

INSERT EMPLOYEES имеет 8 столбцов и WAY более 8 значений в части заявления VALUES. Я не думаю, что вы понимаете, как работает SQL.

Как намек, это:

INSERT LOCATIONS 
(Location_ID,Postal_Code,City,State_Province,Country) 
VALUES 
('L0001,L0002','19121,08618','Philadelphia,Trenton','PA,NJ','USA,USA') 

должен выглядеть следующим образом:

INSERT LOCATIONS 
(Location_ID,Postal_Code,City,State_Province,Country) 
VALUES 
('L0001','19121','Philadelphia','PA','USA'); 

INSERT LOCATIONS 
(Location_ID,Postal_Code,City,State_Province,Country) 
VALUES 
('L0002','08618','Trenton','NJ','USA'); 

Вам нужно одно заявление вставки для каждой строки вы вставляете.

DEPARTMENTS и EMPLOYEES ошибочны таким же образом.

Также неверно называть таблицы в PLURAL, они должны быть единственными. DEPARTMENT, EMPLOYEE, LOCATION поскольку каждая строка представляет собой единое целое.

+0

Если вы хотите один оператор, можно сказать, Вставка LOCATIONS (перевалы, Cols) Выбрать 'Value', 'Значение' UNION ALL Выбрать 'Value', 'Value' – keith

+0

Спасибо за ваше объяснение. Я понял, что делаю неправильно. Я думал, что могу вставить несколько строк с одной компактной партией или оператором – getbruce

2

Вы можете сделать несколько вставок, как это, хотя,

INSERT INTO LOCATIONS 
    (Location_ID,Postal_Code,City,State_Province,Country) 
    VALUES 
    ('L0001','19121','Philadelphia','PA','USA'), 
    ('L0002','08618','Trenton','NJ','USA'); 
Смежные вопросы