您可以在此上使用STORED PROCEDURE
,这样您只会从应用程序级调用一次。例如,
DELIMITER $$
CREATE PROCEDURE InsertBook
(
IN _Title INT,
IN _AwardName VARCHAR(35),
IN _Year INT
)
BEGIN
INSERT INTO Books (Title)
VALUES(_Title);
-- since the ID is set as AUTO_INCREMENT
-- there are two ways to do how you can get the ID
-- from the Books Table and insert it
-- on BookAwards
-- FIRST WAY
-- by using LAST_INSERT_ID()
SET @last_ID = LAST_INSERT_ID();
-- SECOND WAY
-- by using MAX()
-- SET @last_ID = (SELECT MAX(ID) FROM Books);
INSERT INTO BookAwards(ID, AwardName, Year)
VALUES (@last_ID, _AwardName, _Year);
END $$
DELIMITER ;
而且在应用程序级别或您想调用这个程序的任何来源,
CALL InsertBook('Lost Art', 'Best in Churva', 2013);
为了安全起见,你仍然可以参数化的程序,如
CALL InsertBook(?, ?, ?);
有没有更简单的方法呢?我使用PHP与MySQL。我有一个管理界面供一个图书馆使用。所以我想要做的是,当管理员想要将图书添加到目录页面时,他将值放入文本框中,然后在文本框中获取值并将其插入到这些表格中。我应该在mysql数据库中运行过程,然后在php脚本中调用过程? – user2127632
你是什么意思?执行两条'INSERT'语句。而不是将其包装在存储的过程中。 –
抱歉,由于某种原因,当我按住shift并进入而不是进入新行时,它提交了评论我试图输入更多,但它已提交,这就是为什么我的问题看起来如此普遍。 – user2127632