2017-12-06 20 views
0

2つのテーブルにレコードを挿入するプロシージャを作成する必要がありますが、2番目のテーブルでは最初のテーブルに挿入された最後のIDを挿入します。誰も私にこれを手伝ってもらえますか?MySQL - 1つのプロシージャで2つのテーブルに挿入

I attached my table design

これは私達がちょうど最初のINSERTクエリにそれを挿入したとき

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 ; 

がどのように我々は、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の値を設定するかのブロックにクエリを行う必要があります。

関連する問題