MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

ストアドプロシージャおよび関数内で実行されるアクションはどのように複製されますか?


ストアドプロシージャおよび関数で実行される実際の標準アクションは、マスターMySQLサーバーからスレーブMySQLサーバーに複製されます。マスターMySQLサーバーで通常のDDLステートメントを介して実行されるストアドプロシージャと関数の作成でさえ、スレーブMySQLサーバーに複製されます。このようにして、オブジェクトは両方のサーバーに存在します。

MySQLはストアドプロシージャと関数内で発生する各DDLイベントを記録するため、ストアドプロシージャと関数内で発生するアクションが複製されます。イベントを記録した後、それはスレーブMySQLサーバーに複製されます。ただし、ストアドプロシージャを実行するために行われた実際の呼び出しは複製されません。以下は、プロシージャCALLが実際にはマスターMySQLサーバー上にあるために複製されない例です。

mysql> Delimiter //
mysql> CREATE PROCEDURE myproc()
    -> BEGIN
    -> DELETE FROM mytable LIMIT 1;
    -> END //
マスターMySQLサーバーでこのプロシージャを呼び出すと、複製されません。

mysql> Delimiter ;
mysql> CALL myproc();

  1. MySQLのプロシージャ内で変数を宣言する方法は?

    DECLAREコマンドを使用して、MySQLプロシージャ内で変数を宣言できます。 MySQLでストアドプロシージャを作成しましょう- mysql> DELIMITER // mysql> CREATE PROCEDURE DECLARE_VARIABLE_DEMO(IN value int)    -> BEGIN    -> DECLARE searchValue int;    -> set searchValue=value;    -> if searchValue=10

  2. MySQLストアドプロシージャで区切り文字を正しく使用して値を挿入するにはどうすればよいですか?

    まずテーブルを作成しましょう- mysql> create table DemoTable2028    -> (    -> StudentFirstName varchar(20),    -> StudentLastName varchar(20)    -> ); Query OK, 0 rows affected (0.87 sec) これは、ストアドプロシージャを作成し、値を挿入するためのクエリです(区切り文字を正しく使用して)- mysql> delimiter