書籍番号 idと書籍の部数を指定すると、書籍の部数と同じ数の行をテーブルに挿入したいと考えています。これは私の機能しないソリューションです:
DROP PROCEDURE IF EXISTS insert_into_book_copy_table;
CREATE PROCEDURE insert_into_book_copy_table (IN in_book_id INT,
IN in_num INT)
BEGIN
SET @I = 1;
SET @ACQUIRED = CURRENT_TIMESTAMP;
WHILE I <= in_num DO
INSERT INTO book_copy (book_id, acquired) # The table has an
VALUES (in_book_id, @ACQUIRED); # auto-increment field
# which I didn't list here
SET @I = @I + 1;
END WHILE;
END$$
たとえば、指定された書籍番号 IDが 23 で、書籍の部数が 8 の場合、book_copy テーブルは次のようになります。
SELECT * FROM book_copy;
╔══════════════╦══════════╦═════════════════════╗
║ book_copy_id ║ book_id ║ acquired ║
╠══════════════╬══════════╬═════════════════════╣
║ 1 ║ 23 ║ 2013-04-15 18:15:20 ║
║ 2 ║ 23 ║ 2013-04-15 18:15:20 ║
║ 3 ║ 23 ║ 2013-04-15 18:15:20 ║
║ 4 ║ 23 ║ 2013-04-15 18:15:20 ║
║ 5 ║ 23 ║ 2013-04-15 18:15:20 ║
║ 6 ║ 23 ║ 2013-04-15 18:15:20 ║
║ 7 ║ 23 ║ 2013-04-15 18:15:20 ║
║ 8 ║ 23 ║ 2013-04-15 18:15:20 ║
╚══════════════╩══════════╩═════════════════════╝
そして、これをコーディングするより良い方法はありますか?