问题
This is the message I'm getting
ER_WRONG_VALUE_COUNT_ON_ROW: Column count doesn't match value count at row 1
This is my whole code. Where is my mistake?
DROP TABLE student;
CREATE TABLE employee (
emp_id INT PRIMARY KEY,
first-name VARCHAR(40),
birth_day DATE,
sex VARCHAR(1),
SALARY INT,
super_id INT,
branch_id INT
);
CREATE TABLE branch (
branch_id INT PRIMARY KEY,
branch_name VARCHAR(40),
mgr_id INT,
mgr_start_date DATE,
FOREIGN KEY(mgr_id) REFERENCES employee(emp_id) ON DELETE SET NULL
);
CREATE TABLE works_with (
emp_id INT,
client_id INT,
total_sales INT,
PRIMARY KEY(emp_id, client_id),
FOREIGN KEY(emp_id) REFERENCES employee(emp_id) ON DELETE CASCADE,
FOREIGN KEY(client_id) REFERENCES client(client_id) ON DELETE CASCADE
);
-- Corporate
INSERT INTO employee VALUES(100, 'David', 'Wallace', '1967-11-17', 'M', 250000, NULL, NULL);
INSERT INTO branch VALUES(1, 'Corporate', 100, '2006-02-09');
UPDATE employee
SET branch_id = 1
WHERE employee_id = 100;
INSERT INTO employee VALUES(101, 'Jan', 'Levinson', '1961-05-11', 'F', 110000, 100, 1);
回答1:
Your employee
table has 7 columns, but you are giving 8 values for insert, which generates the error message that you are getting.
A good habit is to list the columns for insert
in the statement. This makes this type of error much easier to spot, since you don't need to look back at the definition of the table (it also prevents your query from failing if you ever add new columns to the table at some point in the future - or drop existing columns).
INSERT INTO employee(emp_id, first_name, birth_day, sex, salary, super_id, branch_id)
VALUES(100, 'David', 'Wallace', '1967-11-17', 'M', 250000, NULL);
Side note: unquoted identifier first-name
, that can be seen in the create table
statement for employee
, is not valid - because it contains a dash (-
). I assume that's a typo and you meant an underscore instead (first_name
).
来源:https://stackoverflow.com/questions/61386159/i-examined-every-little-piece-of-information-and-i-still-didnt-find-my-goal-i