当 A缺少以下语句时,TRIGGER可以显式创建而不需要start 和 end ,这告诉我们该语句具有简单的结构。DELIMITERBEGINEND
trigger可以在不使用分隔符的情况下创建以下内容
CREATE TRIGGER multiplicaIds BEFORE INSERT ON users
FOR EACH ROW
SET New.id = (SELECT MAX(id) * 10 FROM users);
使用BEGIN和END
确定我们是否需要复杂结构并因此需要BEGIN并且END是否需要的一种方法是,例如,我们是否将SELECT在同一个 PA 中有多个语句,例如:
DELIMITER //
CREATE PROCEDURE filtraDatos(IN id1 INT, IN id2 INT)
BEGIN
SELECT * FROM tabla1 WHERE id = id1;
SELECT * FROM tabla2 WHERE id = id2;
END;
//
存储过程
当我们在 MySQL 中编写常规语句时,我们会得到如下内容:
我们清楚地注意到表示它的术语的符号是
;
现在在创建PA的情况下,我们有这个:
在前面的语法中,我们将
;
用作语句的结束指示符的使用替换为,//
因此当我们从控制台编写它时,按ENTER不会结束它在行上的创建SELECT
。完成上述操作后,我们可以指示整个 PA 语句从它第一次出现的地方开始,
//
直到相同的符号再次出现为止。触发器
案例一
当我们编写一个触发器时,我们有一个类似这样的语句:
以同样的方式,我们使用
DELIMITER
来指示代码块的开始和结束,再次防止它TRIGGER
在读取;
行的 时立即执行SET
。主要在数据库管理器控制台级别,省略了这个操作符的使用;可能会导致这样的错误:
尽管您可以在没有此运算符帮助的情况下创建它们,但您应该在执行这些结构的创建时将其考虑在内,并且它们本身就使用
BEGIN
和END
。案例2
当 A缺少以下语句时,
TRIGGER
可以显式创建而不需要start 和 end ,这告诉我们该语句具有简单的结构。DELIMITER
BEGIN
END
trigger
可以在不使用分隔符的情况下创建以下内容使用
BEGIN
和END
确定我们是否需要复杂结构并因此需要
BEGIN
并且END
是否需要的一种方法是,例如,我们是否将SELECT
在同一个 PA 中有多个语句,例如:PA
我们以这种方式调用的同一个:参考
DELIMITER
分隔符:
它指的是我们查询的分隔符
SQL
,它允许我们告诉MySQL
分隔符之前的所有内容都是单个代码块的一部分,您可以选择任何分隔符。附加数据并考虑到:
它们通常用于定义需要定义多个语句的函数、存储过程和触发器。你定义了一个
delimitador
不同的,like$$
,用来定义整个过程的结束,但是在里面,各个语句以**;**
这样的方式结束,当代码在客户端执行时,客户mysql
端可以知道整个过程在哪里结束。过程并将其作为一个单元执行,而不是执行其中的各个语句。请注意,关键字
DELIMITER
只是客户端(和其他一些客户端)的命令行功能,mysql
而不是普通语言功能MySQL
. 如果您尝试通过编程语言将其传递API
给MySQL
. 其他一些客户端喜欢PHPMyAdmin
有其他方法来指定非默认分隔符。