Mysql 存储过程试图插入到两个表中:错误1136
我试图让这个程序在两个不同的表中添加一个新行:bilde和student。 bilde中输入的值应来自student中使用的值 在这一点上,我得到了这个消息:错误代码:1136。列计数与第1行的值不匹配,我不太确定如何解决这个问题Mysql 存储过程试图插入到两个表中:错误1136,mysql,stored-procedures,mysql-error-1136,Mysql,Stored Procedures,Mysql Error 1136,我试图让这个程序在两个不同的表中添加一个新行:bilde和student。 bilde中输入的值应来自student中使用的值 在这一点上,我得到了这个消息:错误代码:1136。列计数与第1行的值不匹配,我不太确定如何解决这个问题 DELIMITER $$ DROP PROCEDURE IF EXISTS NyStudent $$ CREATE PROCEDURE NyStudent ( brukernavn VARCHAR(45)
DELIMITER $$
DROP PROCEDURE IF EXISTS NyStudent $$
CREATE PROCEDURE NyStudent (
brukernavn VARCHAR(45)
,fornavn VARCHAR(45)
,etternavn VARCHAR(45)
,klassekode INT
)
BEGIN
START TRANSACTION;
INSERT INTO bilde (filnavn, beskrivelse)
VALUES (CONCAT('bilder/', fornavn, '.jpg'), CONCAT('bilde av ', fornavn, ' ', etternavn));
INSERT INTO student
VALUES ('donaldduck','donald','duck','1');
COMMIT;
END$$
DELIMITER ;
CALL NyStudent('donaldduck','donald','duck','1');
尝试为学生在“INSERT INTO”语句中添加列名,因为这应该是列计数错误的主要原因
此外,即使我们为表的每一列插入值,最好的做法是在insert INTO语句之后包含列名。遵循这一点可以在一定程度上避免代码中的任何中断,即使在将来的架构更改中也是如此。尝试在学生的“INSERT INTO”语句中添加列名,因为这应该是列计数错误的主要原因。如果不起作用,请共享bilde和student表的模式,以便我们了解其中存在的数据类型和列名。首先,在不使用存储过程的情况下进行简单的插入。@sabharikarthik Thank的“我让它起作用了”,忽略了“insert-INTO*语句”。因此,我会将注释作为答案发布,因为这会帮助其他人。