同じサーバー上の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
の権限 。
異なるサーバー上のデータベースはかなり複雑に聞こえます。