具有自动增量的存储过程 - 列计数异常
Stored procedures with auto increment - Column count exception
我有一个带有自动递增 ID 的 table。 id 也是另一个 table 中的外键。当我尝试向这些 table 添加值时出现异常 - 列数与第 1
行的值数不匹配
这些是我的 tables:
CREATE TABLE Hotspot(
num int auto_increment not null,
id varchar(255),
x int,
y int,
width int,
height int,
UNIQUE(id),
PRIMARY KEY (num)
);
CREATE TABLE Hotspot_Label(
num int auto_increment not null,
question_id varchar(255),
hotspot_id varchar(255),
label_id varchar(255),
PRIMARY KEY (num),
FOREIGN KEY (hotspot_id)
REFERENCES Hotspot(id),
FOREIGN KEY (label_id)
REFERENCES Label(id),
FOREIGN KEY (question_id)
REFERENCES Question(id)
);
这是 table 之一的存储过程
PROCEDURE `insertHotspot`(IN recID varchar(255), x int, y int, width int, height int)
BEGIN
INSERT INTO Hotspot VALUES(recID, x, y, width, height);
END
我了解到您不需要在存储过程中插入自动增量值,所以我看不出哪里出了问题
INSERT INTO Hotspot VALUES(num,recID, x, y, width, height);
应该和上面一样
您离开了专栏
数量
它是自动递增的,但它不需要添加任何值,如果您错过它,列数会减少。
形式为 INSERT INTO some_table VALUES(field_values);
的插入查询被视为 INSERT INTO some_table(full_field_list_in_ddl_defined_order) VALUES (field_values);
这意味着,正如 Bala 指出的那样,您的插入需要 Hotspot.num
的值。
这也意味着,一旦您现在修复字段列表,如果以后有人在 table 末尾以外的任何地方添加新字段,您提供的字段值将不再与适当的对齐字段...并且没有关于它们用于哪些字段的明确文档。
我有一个带有自动递增 ID 的 table。 id 也是另一个 table 中的外键。当我尝试向这些 table 添加值时出现异常 - 列数与第 1
行的值数不匹配这些是我的 tables:
CREATE TABLE Hotspot(
num int auto_increment not null,
id varchar(255),
x int,
y int,
width int,
height int,
UNIQUE(id),
PRIMARY KEY (num)
);
CREATE TABLE Hotspot_Label(
num int auto_increment not null,
question_id varchar(255),
hotspot_id varchar(255),
label_id varchar(255),
PRIMARY KEY (num),
FOREIGN KEY (hotspot_id)
REFERENCES Hotspot(id),
FOREIGN KEY (label_id)
REFERENCES Label(id),
FOREIGN KEY (question_id)
REFERENCES Question(id)
);
这是 table 之一的存储过程
PROCEDURE `insertHotspot`(IN recID varchar(255), x int, y int, width int, height int)
BEGIN
INSERT INTO Hotspot VALUES(recID, x, y, width, height);
END
我了解到您不需要在存储过程中插入自动增量值,所以我看不出哪里出了问题
INSERT INTO Hotspot VALUES(num,recID, x, y, width, height);
应该和上面一样 您离开了专栏
数量
它是自动递增的,但它不需要添加任何值,如果您错过它,列数会减少。
形式为 INSERT INTO some_table VALUES(field_values);
的插入查询被视为 INSERT INTO some_table(full_field_list_in_ddl_defined_order) VALUES (field_values);
这意味着,正如 Bala 指出的那样,您的插入需要 Hotspot.num
的值。
这也意味着,一旦您现在修复字段列表,如果以后有人在 table 末尾以外的任何地方添加新字段,您提供的字段值将不再与适当的对齐字段...并且没有关于它们用于哪些字段的明确文档。