在我的项目中,我使用存储过程。在这里我已经编写了用于插入数据的查询。也就是说,
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_studentdetails`(
in inputStream mediumblob,
in salutation varchar(50),
in fname varchar(50),
in mname varchar(50),
in lname varchar(50),
in dob varchar(50),
in gender varchar(50),
in identify varchar(50),
in nationality varchar(50),
in blood varchar(50),
in physical varchar(50),
in health varchar(50),
in nationalid varchar(50),
in mtongue varchar(50)
)
BEGIN
INSERT INTO
tbl_student_details(studentpic,salutation,fname,mname,lname,
dob,gender,identify,nationality,blood,physical,health,nationalid,mtongue)
values (inputStream,salutation,fname,mname,lname,
dob,gender,identify,nationality,blood,physical,health,nationalid,mtongue);
END
在这里,我想为同一张表再添加一个更新查询。我不知道该怎么办。
最佳答案
你可以使用
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
参见https://dev.mysql.com/doc/refman/5.7/en/insert-on-duplicate.html
当然你必须为你的程序构建它
在你的情况下,这应该看起来像
INSERT INTO
tbl_student_details
(
studentpic,salutation,fname,mname,lname,
dob,gender,identify,nationality,blood,physical,
health,nationalid,mtongue
)
values
(
inputStream,salutation,fname,mname,lname,
dob,gender,identify,nationality,blood,physical,
health,nationalid,mtongue
)
ON DUPLICATE KEY UPDATE
(
studentpic=inputStream,salutation=salutation,fname=fname,....
-- go with rest of your variables...
-- you should consider to use diffrent name or quote them right
);
在这里,您需要数据库中一些唯一的列来导致重复的效果。您可以添加一个 ID 列作为您的创建的主键。
编辑:根据您的评论
这仍然是您所做的同一件事...您将更新现有数据,包括该行的新数据,或者仅在可以分离它时更新新数据。
例如
insert into tbl(a,b,c) values ('aaa','bbb','ccc')
ON DUPLICATE KEY UPDATE b='bbb', c='ccc', d='ddd', e='eee', f='fff';
关于mysql - 如何使用mysql在同一存储过程中使用插入和更新查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44965859/