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

ストアドプロシージャは2つの異なるデータベースで機能しますか? 2台のサーバーはどうですか?

    同じサーバー上の2つのデータベースについて話している場合:はい、ストアドプロシージャは別のデータベースにアクセスできます。プロシージャを実行している権限を持つユーザーが、各データベースに対して必要な権限を持っていることを確認する必要があります。

    たとえば、同じサーバーに2つのデータベースmydb1があるとします。 およびmydb2 、およびそれぞれにmessagesという名前のテーブルが含まれていること 同じ構造で。ストアドプロシージャをmydb2に追加するとします。 messagesを空にします mydb2のテーブル messagesの内容をコピーします mydb1のテーブル 。あなたはこれを行うことができます:

    CREATE PROCEDURE `SynchroniseMessages` ()
    LANGUAGE SQL
    NOT DETERMINISTIC
    MODIFIES SQL DATA
    SQL SECURITY DEFINER
    BEGIN
    
    DELETE FROM `mydb2`.`messages`;
    
    INSERT INTO
        `mydb2`.`messages`
        SELECT * FROM `mydb1`.`messages`;
    
    END
    

    テーブルが属するデータベースでテーブルを完全に修飾した方法をご覧ください。実際、このストアドプロシージャはmydb2に属するように指定したため、私はここで熱心すぎると主張することができます。 。 mydb2を追加する必要はありません 。 修飾子。ストアドプロシージャがmydb1にあった場合 データベースの場合、これらの修飾子は必要ですが、逆に mydb1は必要ありません。 。 表示される場所。

    このプロシージャを実行できるようにするには(おそらくそれを定義できるようにするために?)、ユーザーがDELETEを持っていることを確認する必要があります。 およびINSERT mydb2の権限 、およびSELECT mydb1の権限 。

    異なるサーバー上のデータベースはかなり複雑に聞こえます。



    1. OracleDBへのXMLデータのインポート

    2. SELECTとUPDATEを使用したMySQLのループを使用して、テーブルを並べ替えます

    3. PDOMySQLバックアップ機能

    4. JavaでJTableを使用してMySQLデータベースからレコードを表示する