MySQLストアドプロシージャ内でCOMMITトランザクションを実行するにはどうすればよいですか?
知っているように、STARTトランザクションはトランザクションを開始し、COMMITは、トランザクションの開始後に行われた変更を行うために使用されます。次の例では、COMMITとSTARTトランザクションを使用してストアドプロシージャを作成しました。これにより、新しいレコードが挿入され、次のデータを持つテーブル「employee.tbl」に変更がコミットされます-
mysql> Select * from employee.tbl; +----+---------+ | Id | Name | +----+---------+ | 1 | Mohan | | 2 | Gaurav | | 3 | Rahul | | 4 | Saurabh | +----+---------+ 4 rows in set (0.00 sec)
mysql> Delimiter // mysql> Create Procedure st_transaction_commit() -> BEGIN -> START TRANSACTION; -> INSERT INTO employee.tbl(name) values ('Yash'); -> UPDATE employee.tbl set name = 'Sohan' WHERE id = 3; -> COMMIT; -> END // Query OK, 0 rows affected (0.03 sec)
このプロシージャを呼び出すと、テーブルemployee.tblの値が挿入および更新されます。また、変更をコミットします。
mysql> Delimiter ; mysql> Call st_transaction_commit(); Query OK, 0 rows affected (0.17 sec) mysql> Select * from employee.tbl; +----+---------+ | Id | Name | +----+---------+ | 1 | Mohan | | 2 | Gaurav | | 3 | Sohan | | 4 | Saurabh | | 5 | Yash | +----+---------+ 5 rows in set (0.00 sec)
-
MySQLストアドプロシージャ内でSTARTトランザクションを実行するにはどうすればよいですか?
知っているように、STARTトランザクションはトランザクションを開始し、自動コミットモードをオフに設定します。次の例では、次のデータを持つテーブルemployee.tblに新しいレコードを挿入するSTARTトランザクションを使用してストアドプロシージャを作成しました- mysql> Select * from employee.tbl; +----+---------+ | Id | Name | +----+---------+ | 1 | Mohan | | 2 | Gaurav | | 3 |
-
MySQLストアドプロシージャは、その中の別のMySQLストアドプロシージャをどのように呼び出すことができますか?
MySQLストアドプロシージャがその中の別のMySQLストアドプロシージャを呼び出す可能性は十分にあります。これを示すために、ストアドプロシージャが別のストアドプロシージャを呼び出してlast_insert_idを見つける例を取り上げています。 例 mysql> Create table employee.tbl(Id INT NOT NULL AUTO_INCREMENT, Name Varchar(30) NOT NULL, PRIMARY KEY(id))// Query OK, 0 rows affected (3.87 sec) mysql> Create Proced