Delimiter$$
CREATE TRIGGER after_finisher_update
AFTER UPDATE ON Booklist1
FOR EACH ROW
BEGIN
UPDATE Booklist1
SET Finished = 'yes'
WHERE Current_Page = Page_Count
END $$
我有一个包含多列的表格,形成一个书单(标题、作者...等)。我希望我的“已完成”列(默认为“否”)在 current_page = page_count 后切换为"is"。
- 有人可以解释一下 delimiter 的含义和 delimiter$$ 的含义吗?
- 当我以 END$$ 结束时(上面的代码中省略),我的终端无法正常工作。无论我输入什么,都会进入控制台并逐字返回,但什么也不做。有谁知道这个错误?我试着查了一下,但什么也没找到。其他条目也会发生这种情况。
谢谢。
最佳答案
Mysql使用; 标记语句的结束。
当您定义过程、函数或触发器时,您将使用多个语句。
你需要告诉mysql函数/过程/触发语句的结尾在哪里。
如果输入分隔符//,我将使用//来指示语句的结束。
所以这个 block :
select now() ;
do sleep(1) ;
select now() ;
可以替换为:
delimiter //
select now() //
do sleep(1) //
select now() //
delimiter ;
使用 $$ 作为分隔符创建触发器的示例:
delimiter $$
create trigger trg_table_insert after insert on table
for each row
begin
insert into table_log ( dml_type , col_a,col_b , col_c ) value ( 'I', new.col_a,new.col_b,new.col_c );
end
$$
delimiter ;
AND 每次我将分隔符恢复为 ; 。
^^^^^^^ 你这样做是为了获得 mysql 的常规行为。
关于mysql - MySQL 限制器说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51734010/