【问题标题】:phpMyAdmin Stored Procedure ExplanationphpMyAdmin 存储过程说明
【发布时间】:2013-12-15 17:09:33
【问题描述】:

我在 phpMyAdmin 中创建存储过程时发现了以下选项屏幕。

现在我想知道一切意味着什么。

我知道Routine nameTypeParametersDefinitionDefinerSecurity typeComment 选项。

但是我不知道如何处理Is deterministicSQL data access。我试过谷歌它,但找不到它。有人能告诉我这些值是什么意思吗?

【问题讨论】:

标签: mysql sql phpmyadmin


【解决方案1】:

确定性:

如果一个过程或函数对于相同的输入参数总是产生相同的结果,则被认为是“确定性的”,否则被认为是“非确定性的”。如果例程定义中既没有给出 DETERMINISTIC 也没有给出 NOT DETERMINISTIC,则默认为 NOT DETERMINISTIC。

SQL 数据访问:

  • CONTAINS SQL 表示例程不包含读取或写入数据的语句。如果没有明确给出这些特征,则这是默认设置。此类语句的示例是 SET @x = 1 或 DO RELEASE_LOCK('abc'),它们执行但既不读取也不写入数据。

  • NO SQL 表示例程不包含 SQL 语句。

  • READS SQL DATA 表示例程包含读取数据的语句(例如,SELECT),但不包含写入数据的语句。

  • MODIFIES SQL DATA 表示例程包含可能写入数据的语句(例如,INSERT 或 DELETE)。

【讨论】:

  • 感谢您的回答,但我仍然对何时应用 SQL 数据访问 感到困惑。我最初将所有存储过程都设置为 NO SQL,因为我不知道它的含义。然而,选择数据有效。现在我已将其中一些更改为 READS SQL DATA,但我没有看到任何变化。 SQL DATA ACCESS 何时应用于存储过程?
  • «在 MySQL 中,这些特性仅供参考。服务器不使用它们来限制例程将被允许执行的语句类型»。 dev.mysql.com/doc/refman/8.0/en/create-procedure.html
猜你喜欢
  • 2016-12-02
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 2016-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多