views:

57

answers:

1

I am trying to create the correct values for the tables I created. This is the code:

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

This is the error message: Msg 8152, Level 16, State 14, Line 2 String or binary data would be truncated. The statement has been terminated. Msg 110, Level 15, State 1, Line 1 There are fewer columns in the INSERT statement than values specified in the VALUES clause. The number of values in the VALUES clause must match the number of columns specified in the INSERT statement. Msg 8152, Level 16, State 14, Line 1 String or binary data would be truncated. The statement has been terminated.

I would like to know what I am doing wrong and the correct code. Can anyone help me out? Thanks

+3  A: 

INSERT EMPLOYEES has 8 columns and WAY more than 8 values in the VALUES part of the statement. I don't think you understand how SQL works.

As an hint, this:

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

should look like this:

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

You need one insert statement for every row you are inserting.

The DEPARTMENTS and EMPLOYEES is wrong in this same way as well.

Also it is bad practice to name tables in PLURAL, they should be singular. DEPARTMENT, EMPLOYEE, LOCATION since each row represents a single entity.

fuzzy lollipop
If you wanted one statement you could say Insert LOCATIONS(Cols,Cols)Select 'Value', 'Value'UNION ALLSelect 'Value', 'Value'
keith
Thanks for your explanation. I realized what I was doing wrong. I thought that I could insert multiple rows with one compact batch or statement
getbruce