【问题标题】:What is the "no" keyword used for in MySQL?MySQL 中使用的“no”关键字是什么?
【发布时间】:2021-08-02 12:05:10
【问题描述】:

我只是偶然发现“no”是Mysql中的保留字/关键字。

我在谷歌上搜索了它的用途,但找不到答案。

有人可以解释一下,或者有任何链接可以解释每个Mysql的保留关键字用法吗?

https://dev.mysql.com/doc/refman/8.0/en/keywords.html

【问题讨论】:

  • MySQL 现在可能还没有使用它,但将来可能会使用它。一个很好的类比可能是 goto 关键字,它在 Java 中保留,但 Java 并未实际使用。

标签: mysql reserved-words


【解决方案1】:

我搜索了MySQL 8.0 grammar file,发现NO令牌的使用方式如下:

  • 在级联外键声明中,可以使用ON {UPDATE|DELETE} NO ACTION

  • stored routinesNO SQL 特征中。

  • COMMIT 语句的一个选项,这意味着在提交当前事务后自动启动新事务或释放会话。

    COMMIT AND NO CHAIN;
    COMMIT AND NO RELEASE;
    

    https://dev.mysql.com/doc/refman/8.0/en/commit.html 说:

    包含NO 关键字会抑制CHAINRELEASE 完成,如果completion_type 系统变量设置为默认导致链接或释放完成,这将很有用。

  • 作为一种合并插入类型,当将CREATE TABLE 用于 MERGE 表时,这是一个表选项。如果您将表声明为:

    CREATE TABLE mytable (...) ENGINE=MERGE UNION=(...) INSERT_METHOD=NO;
    

不管怎样,NO 关键字不是 保留 关键字。在您链接到的关键字文档页面中,保留关键字标有“(R)”,但NO 没有该注释。因此,您可以使用 NO 作为标识符,而不必用反引号分隔它。

mysql> create table no ( i int);
Query OK, 0 rows affected (0.05 sec)

【讨论】:

    【解决方案2】:

    NOANSI SQL中的保留字,但目前在MySQL中不用作关键字。它已经如此定义,因此在以后的扩展中可以添加语义用法。

    语言定义中的一种常见做法是保留一些词,但不使用它们,因为它们在语言的早期状态下是不需要的,甚至以后可能不需要使用它。 但是稍后将保留关键字添加到现有语言中总是很痛苦,因为您可能在现有脚本中有具有该名称的变量,并且您需要更新/重写它们以与语言更新兼容(哪些语言更新尝试防止向后兼容并简化更新过程)。这就是为什么语言设计者从根据需要保留更多关键字开始,以便以后更灵活地将它们添加到语言中而不会破坏向后兼容性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-06
      • 1970-01-01
      • 2011-02-03
      • 2018-03-23
      • 2012-11-14
      • 2014-09-27
      相关资源
      最近更新 更多