sql >> データベース >  >> RDS >> Mysql

主キーと外部キーを持つ2つのテーブルに一度に挿入するmysql

    STORED PROCEDUREを使用できます これで、アプリケーションレベルから1回だけ呼び出すようになります。例、

    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(?, ?, ?);
    



    1. mysqlテーブルのエンコーディングを変更するときにマイナスの影響はありますか?

    2. MySQLにタイムゾーンオフセットを格納するためのデータ型/構造

    3. mysqlは1つの列に複数の値で結合します

    4. SQLは複数のフィールドから選択に挿入します