你好我正在做一個數據庫任務,我被困在如何做到這一個存儲過程。雖然它的工作原理,有點...通過存儲過程將信息插入父/子表中?
DELIMITER //
CREATE PROCEDURE AddANewCustomer(IN firstName char(20), IN lastName char(20), IN companyName char(45), IN streetAddress char(60), IN city char(30), IN province char(45), IN postalCode char(6), IN phoneNumber int(10))
BEGIN
DECLARE PersonID INT;
SELECT idPerson FROM Persons WHERE Persons.firstName = firstName AND Persons.lastName = lastName INTO PersonID;
IF PersonID IS NULL THEN
INSERT INTO Persons(firstName, lastName, streetAddress, city, province, postalCode, phoneNumber) VALUES (firstName, lastName, streetAddress, City, Province, postalCode, phoneNumber);
SELECT idPerson FROM Persons WHERE firstName = firstName AND lastName = lastName INTO PersonID;
END IF;
INSERT INTO Customers(idCustomer, companyName) VALUES (Last_Insert_ID(), companyName);
END //
DELIMITER ;
基本上我與超/子類型的工作。我想從用戶那裏獲取信息,然後更新我的父表(Persons),並將剩餘的信息傳遞給我的子表(Customers)。 idPerson是Persons表的自動遞增PK,我想將它用作Customers表的id,idCustomer的PK/FK。
如果我運行一次該過程,它會吐出一個錯誤'結果包含多行',只有父表得到更新...但是如果我再次運行它,它會更新孩子表格正確。這讓我認爲Last_Insert_ID()參數第一次爲null,並且在過程完成後idPerson纔會更新。
我已經研究了整個晚上的修復,現在我絕對難以解決這個問題。