您可以在此上使用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