简体   繁体   中英

mysql procedure for insert with select from another table

I want to create a procedure that creates a course for a user this takes one parameter that is userid and the other value will be selected from tbl_chapter .there are 27 chapters that are going to be selected and 27 inserts will be executed .insert is going to be like INSERT INTO tbl_user_chapter(user_id,chapter_id) VALUEs (9 , 1),(9,2),(9,3),... . I want something like this:

CREATE PROCEDURE createCourse (IN userid_param int)
BEGIN
INSERT INTO tbl_user_chapter(tbl_user_chapter.user_id,tbl_user_chapter.chapter_id) VALUE(userid_param , SELECT id FROM tbl_chapter)
END

SELECT id FROM tbl_chapter will be multiple rows.

I know this is wrong and I need help.

if there is a better way to do this please let me know.

If the select does not return one row, then don't use the VALUES( ) syntax. Use INSERT ... SELECT syntax:

CREATE PROCEDURE createCourse (IN userid int)
BEGIN
  INSERT INTO tbl_user_chapter(user_id,chapter_id) 
  SELECT userid, id FROM tbl_chapter;
END

Make sure userid does NOT conflict with a column of the same name in your tbl_chapter table. If a column exists with that name, you should change the IN parameter of the stored procedure.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM