找到 4379 篇文章 适用于 MySQL

创建过程以找出数字的阶乘?

vanithasree
更新于 2020-06-22 07:21:33

3K+ 次查看

它可以通过以下查询创建:mysql> Delimiter // mysql> CREATE PROCEDURE fact(IN x INT)     -> BEGIN     -> DECLARE result INT;     -> DECLARE i INT;     -> SET result = 1;     -> SET i = 1;     -> WHILE i SET result = result * i;     -> SET i = i + 1;     -> END WHILE;     -> SELECT x AS Number, result as Factorial;     -> END// Query OK, 0 rows affected (0.17 sec)现在调用此... 阅读更多

复制存储过程和函数的限制是什么?

Rishi Rathor
更新于 2020-06-22 07:24:53

190 次查看

以下是复制存储过程和函数的限制:操作类型 - 实际上,存储过程和函数的复制取决于操作类型。如果存储过程中嵌入的操作是非确定性(随机)或基于时间的,则它可能无法正确复制。由于其本质,随机产生的结果不可预测且无法精确复制,因此,复制到从服务器的随机操作将不会反映在主服务器上执行的操作。事务类型 - 对于在大型 DML 操作(如批量插入)期间发生错误的非事务表,可能会遇到复制问题,因为... 阅读更多

将存储过程和函数与复制一起使用有哪些特殊安全要求?

radhakrishna
更新于 2020-06-22 07:23:52

189 次查看

实际上,MySQL 从服务器有权执行从主服务器的 MySQL 服务器二进制日志中读取的任何语句,因此,对于将存储函数与复制一起使用,存在一些特殊安全约束。如果复制或二进制日志记录通常(出于时间点恢复的目的)处于活动状态,则 MySQL DBA 有两个安全选项可供选择:SUPER 权限选项任何希望创建存储函数的用户都必须由 DBA 授予 SUPER 权限。log_bin_trust_function_creators 模式实际上,log_bin_trust_function_creators 使任何具有标准 CREATE ROUTINE 权限的用户都可以创建存储函数,因此 DBA 可以将 log_bin_trust_function_creators 系统变量设置为 1。阅读更多

存储过程和函数内部发生的操作是如何复制的?

Nancy Den
更新于 2020-06-22 07:27:48

132 次查看

实际上,在存储过程和函数中执行的标准操作是从主 MySQL 服务器复制到从 MySQL 服务器。即使通过主 MySQL 服务器上的普通 DDL 语句执行的存储过程和函数的创建也会复制到从 MySQL 服务器。通过这种方式,对象将存在于两个服务器上。存储过程和函数内部发生的操作会复制,因为 MySQL 记录存储过程和函数内部发生的每个 DDL 事件。记录事件后,它将复制到从 MySQL 服务器。但是,实际的调用... 阅读更多

如何在 MySQL 存储过程中执行回滚事务?

mkotla
更新于 2020-06-22 07:26:52

2K+ 次查看

众所周知,ROLLBACK 将在事务启动后恢复对数据库所做的任何更改。要在 MySQL 存储过程中执行 ROLLBACK,我们必须声明 EXIT 处理程序。我们可以为 sqlexception 或 SQL 警告使用处理程序。可以通过一个示例来理解,其中为具有以下详细信息的表创建了具有 ROLLBACK 的存储过程:mysql> SHOW CREATE table gg\G *************************** 1. row ***************************        Table: gg Create Table: CREATE TABLE `gg` (    `Id` int(11) NOT NULL AUTO_INCREMENT,    `Name` varchar(30) NOT NULL,    PRIMARY KEY ... 阅读更多

当我们在 MySQL 存储过程中使用 COMMIT 并且 START transaction 下的一个事务失败时会发生什么?

Daniol Thomas
更新于 2020-06-22 06:57:24

540 次查看

假设其中一个查询失败或生成错误,而另一个查询 (s) 正确执行,则 MySQL 仍然会提交正确执行的查询 (s) 的更改。可以从以下示例中理解,在该示例中,我们使用的是具有以下数据的表“employee.tbl”:示例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> Delimiter // mysql> ... 阅读更多

如何在 MySQL 存储过程中执行 COMMIT 事务?

mkotla
更新于 2020-06-22 07:02:12

676 次查看

众所周知,START transaction 将启动事务,而 COMMIT 用于在启动事务后进行的任何更改。在以下示例中,我们创建了一个带有 COMMIT 和 START transaction 的存储过程,它将在表“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> ... 阅读更多

如何在 MySQL 存储过程中执行 START 事务?

Sreemaha
更新于 2020-06-22 06:50:09

371 次查看

众所周知,START transaction 将启动事务并将自动提交模式设置为关闭。在以下示例中,我们创建了一个带有 START transaction 的存储过程,它将在表 employee.tbl 中插入新记录,该表具有以下数据:mysql> Select * from employee.tbl; +----+---------+ | Id | Name    | +----+---------+ | 1  | Mohan   | | 2  | Gaurav  | | 3  | Rahul   | +----+---------+ 3 rows in set (0.00 sec)示例mysql> Delimiter // mysql> Create Procedure st_transaction()    -> BEGIN    -> START TRANSACTION;    -> INSERT INTO employee.tbl(name) values ... 阅读更多

如何通过 MySQL 存储过程访问表?

Krantik Chavan
更新于 2020-06-22 07:02:44

312 次查看

我们可以从 MySQL 存储过程访问一个或所有表。以下是一个示例,在该示例中,我们创建了一个存储过程,该过程将接受表名作为参数,并在调用后,将生成包含表中所有详细信息的结果集。示例mysql> Delimiter // mysql> Create procedure access(tablename varchar(30))    -> BEGIN    -> SET @X := CONCAT('Select * from', ' ', tablename);    -> Prepare statement from @X;    -> Execute statement;    -> END// Query OK, 0 rows affected (0.16 sec)现在使用表名调用该过程,我们... 阅读更多

MySQL 存储过程如何在其中调用另一个 MySQL 存储过程?

Vrundesha Joshi
更新于 2020-06-22 06:48:26

4K+ 次查看

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 Procedure insert1()    -> BEGIN insert into employee.tbl(name) values ('Ram');    -> END// Query OK, 0 rows affected (0.10 sec)现在,在下一个过程 insert2() 中,我们将调用第一个存储过程,即 insert1()。mysql> Create Procedure insert2() ... 阅读更多

广告