gpt4 book ai didi

mysql - MYSQL 分隔符什么时候有用?

转载 作者:行者123 更新时间:2023-11-29 02:11:25 25 4
gpt4 key购买 nike

我正在编写 SQL 来为我的数据库中的表创建触发器。这段代码应该放在我们可以在生成新数据库时运行的脚本中。

我一直在阅读 SQL 文档以了解如何执行此操作并最终想出了这种类型的查询:

DELIMITER $$
CREATE TRIGGER calendar_event_after_insert AFTER INSERT
ON calendar_event
FOR EACH ROW
BEGIN
IF @log_calendar_event_id = 'YES'
THEN
...
END IF;
IF @log_calendar_event_name = 'YES'
THEN
...
END IF;
...
END
$$
DELIMITER ;

现在我在使用 DELIMITER 时遇到错误,我承认我不太了解它的工作原理。我的基本理解是,由于这个大查询中有多个查询都以 ; 结尾,我需要在查询结束时使用另一个分隔符告诉 sql。

在阅读了一些关于定界符的内容后,这对我来说似乎是正确的语法,最重要的是我一直在 sequel pro 中运行这个查询,它有时有效,有时无效(我知道这很奇怪)。

所以最终我决定删除定界符部分,一切顺利。我有点担心这会产生副作用。

所以我的问题是:什么时候使用定界符?它们对我有用吗?如果是这样,我在这里做错了什么?


根据评论中的要求进行编辑

这是我在运行查询时遇到的错误:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$ CREATE TRIGGER calendar_event_after_insert AFTER INSERT ON calenda' at line 1

仅供引用,我们在开发机器上安装了旧版本的 MYSQL -- MYSQL 5.1.73

最佳答案

DELIMITER 不是 SQL 语言的一部分。这是一个commandofficial command-line tool :

If you use the mysql client program to define a stored program containing semicolon characters, a problem arises. By default, mysql itself recognizes the semicolon as a statement delimiter, so you must redefine the delimiter temporarily to cause mysql to pass the entire stored program definition to the server.

To redefine the mysql delimiter, use the delimiter command.

有一些第三方程序也实现了 delimiter 命令,以便能够运行复杂的 MySQL 脚本(例如 HeidiSQL)。

如果您在不允许多个语句的上下文中运行脚本(例如典型的 PHP 应用程序),则该命令将不存在也根本不需要。

关于mysql - MYSQL 分隔符什么时候有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51427413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com