找到 4219 篇文章 关于 MySQLi

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

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 存储过程中执行提交事务?

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() ... 阅读更多

创建一个 MySQL 存储过程,该过程将数据库名称作为其参数,以列出特定数据库中具有详细信息的表。

Sravani S
更新于 2020-06-22 06:49:30

362 次查看

假设我们目前正在使用一个名为“query”的数据库,并且它在其中包含以下表 -mysql> Show tables in query; +-----------------+ | Tables_in_query | +-----------------+ | student_detail  | | student_info    | +-----------------+ 2 rows in set (0.00 sec)现在,以下是一个存储过程,它将接受数据库名称作为其参数,并为我们提供具有详细信息的表列表 -mysql> DELIMITER// mysql> CREATE procedure tb_list(db_name varchar(40))    -> BEGIN    -> SET @z := CONCAT('Select * from information_schema.tables WHERE table_schema = ', '\'', db_name, '\'');    -> Prepare stmt from @z; ... 阅读更多

创建一个过程,以列出特定数据库中具有详细信息的表。

Rishi Rathor
更新于 2020-06-22 06:51:19

71 次查看

假设我们当前正在使用一个名为“query”的数据库,其中包含以下表格:
mysql> Show tables in query;
+-----------------+ | Tables_in_query | +-----------------+ | student_detail  | | student_info    | +-----------------+ 2 rows in set (0.00 sec)
现在,以下是一个存储过程,它将为我们提供包含详细信息的表格列表:
mysql> DELIMITER//
mysql> CREATE procedure tablelist()    -> BEGIN    -> Select * from Information_schema.tables WHERE table_schema = 'query';    -> END //
Query OK, 0 rows affected (0.06 sec)
mysql> DELIMITER;
mysql> CALL tablelist()\G
*************************** 1. row ***************************   ... 阅读更多

广告