안녕하세요, 저는 데이터베이스 할당 작업 중이며 저장 프로 시저 하나를 수행하는 방법에 대해 고민하고 있습니다. 그것은 작동하지만, 일종의 ...저장 프로 시저를 통해 부모/자식 테이블에 정보를 삽입 하시겠습니까?
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 ;
기본적으로 나는 슈퍼/하위 유형으로 일하고 있어요. 사용자 정보를 가져 와서 부모 테이블 (사람)을 업데이트하고 나머지 정보를 자식 테이블 (고객)에게 전달하고 싶습니다. idPerson은 Persons 테이블의 자동 증가 PK이며,이를 Customers 테이블의 id 인 idCustomer에 대한 PK/FK로 사용하려고합니다.
프로 시저를 한 번 실행하면 '결과가 두 행 이상으로 구성됩니다'오류가 발생하고 부모 테이블 만 업데이트됩니다 ...하지만 다시 실행하면 하위 요소가 업데이트됩니다 테이블을 제대로. 어느 날 주위에 처음으로 Last_Insert_ID() 매개 변수가 null이며 그 절차가 끝난 후에 idPerson 만 업데이트된다고 생각하게 만듭니다.
나는 밤새도록 고치기를 연구했고, 이제는 이것을 해결하는 방법이 절박합니다.