2017-12-06 2 views
0

레코드를 2 개의 테이블에 삽입하는 절차를 만들어야하지만 두 번째 테이블에는 첫 번째 테이블에 마지막으로 삽입 한 ID를 삽입하고 싶습니다. 누구든지 이걸 도와 줄 수 있니?MySQL - 1 테이블에 2 개의 테이블에 삽입

I attached my table design

이것은

DELIMITER // 
DROP PROCEDURE IF EXISTS ROOM_FEATURE_INSERT; 
CREATE PROCEDURE ROOM_FEATURE_INSERT (propID INT, featID INT, featNme VARCHAR(50)) 
BEGIN 
-- BEGIN CHECK 
IF NOT EXISTS 
(
SELECT rFeatureName FROM COMPANY_T3s71.PROPERTY_RFEATURE PRFE 
INNER JOIN COMPANY_T3s71.ROOM_FEATURE RFEA ON PRFE.rFeatureID=RFEA.rFeatureID 
WHERE BINARY rFeatureName = featNme AND propertyID = propID 
) 
AND 
(
SELECT rFeatureName FROM COMPANY_T3s71.ROOM_VIEW 
WHERE BINARY rFeatureName = featNme 
) 
THEN 
-- IF NOT EXISTS INSERT INTO 1st TABLE 
INSERT INTO COMPANY_T3s71.ROOM_FEATURE (rFeatureName) VALUES (featNme); 
END IF; 
-- END CHECK 

-- BEGIN CHECK 2nd TABLE 
IF NOT EXISTS 
(
SELECT propertyID, rFeatureID FROM COMPANY_T3s71.PROPERTY_RFEATURE 
WHERE rFeatureID = featID AND propertyID = propID 
) 
THEN 
-- IF NOT EXISTS INSERT INTO 2nd TABLE 
INSERT INTO COMPANY_T3s71.PROPERTY_RFEATURE (propertyID, rFeatureID) VALUES (propID, featID); 
END IF; 
-- END CHECK 2nd TABLE 

END 

DELIMITER ; 

우리가 어떻게 우리가 첫 번째 INSERT 쿼리에 그것을 삽입 featID의 PARAM을 전달하지 내 쿼리입니까?

감사합니다.

+0

featID에 AUTO_INCREMENT 옵션이있는 경우 MySQL의'LAST_INSERT_ID()'함수를 사용할 수 있습니다 (https://dev.mysql.com/doc/refman/5.7/en/information-functions.html#function_last-insert-id) –

답변

0

사용 SET featID = LAST_INSERT_ID(); 첫 번째 쿼리 이후 한 다음 데이터가 언제든지 삽입되지 않은 경우

INSERT INTO COMPANY_T3s71.ROOM_FEATURE (rFeatureName) VALUES (featNme); 
SET featID = LAST_INSERT_ID(); 

그러나, 당신은 블록이 featID에 대한 값을 설정하는 경우에 쿼리를 만들어야 변수를 사용합니다.

관련 문제