【问题标题】:What does DELIMITER // do in a Trigger?DELIMITER // 在触发器中做什么?
【发布时间】:2010-11-23 17:10:57
【问题描述】:
DELIMITER //

它有什么用?

【问题讨论】:

    标签: sql mysql


    【解决方案1】:

    它将语句分隔符从; 更改为//。这样你就可以在你的触发器定义中写上;,而不会被 MySQL 客户端误解为你已经完成了它。

    请注意,改回来时,它是 DELIMITER ;,而不是 DELIMITER;,因为我看到人们尝试这样做。

    【讨论】:

      【解决方案2】:

      在 SQL 中,您使用分隔符来关闭每个语句,默认情况下分隔符是分号 (;)。在触发器中,您需要编写多个语句,每个语句都以分号结尾。为了告诉 MySQL 这些分号不是触发器语句的结尾,您暂时将分隔符从 ; 更改为到 //,因此 MySQL 将知道触发器语句仅在遇到 // 时才结束。

      【讨论】:

      • 我认为你表达的比接受的答案更清楚!
      【解决方案3】:

      添加示例:
      在使用 mysql shell 命令时,我们使用; 分隔符来关闭每个语句。但是,如果我们要构建存储过程和触发器,我们还需要在这些语句中添加分号 ;

      delimiter //
      create trigger log_students after insert on students
      for each row
        begin
          insert into log_students(change_by, change_at) values(USER(), NOW());
        end//
      delimiter ;
      

      【讨论】:

        【解决方案4】:

        Simple 设置语句结束分隔符(; 标准分号,默认 SQL)。 如果您想在 SQL 中使用 ;,或者您正在使用嵌入式 SQL(这可能会导致混淆),更改字符可能很有用。同样,您示例中的 // 可能会导致嵌入式 SQL 混淆,或者您可能希望在 SQL 中使用它。所以暗示使用DELIMITER 来设置适合您的应用程序和需求的分隔符。

        【讨论】:

          【解决方案5】:

          阅读(嗯)mysql documentation

          delimiter 是您发送到 mysql 命令行客户端的每个命令的结束标记。

          delimiter 不仅与触发器有关,而且定义触发器和存储过程是一个强大的用例,因为您希望它们包含分号 (;),否则默认为 delimiter

          【讨论】:

            猜你喜欢
            • 2012-05-14
            • 1970-01-01
            • 1970-01-01
            • 2017-04-05
            • 1970-01-01
            • 1970-01-01
            • 2019-04-26
            • 2010-11-18
            • 1970-01-01
            相关资源
            最近更新 更多