限制器说明MySQL

时间:2018-08-07 19:21:58

标签: mysql limit delimiter cloud9

 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后切换为“是”。

  • 有人可以解释定界符的含义和定界符$$的含义吗?
  • 当我以END $$(从上面的代码中省略)结束时,我的终端无法正常工作。无论我键入什么,都将进入控制台并逐字返回,但什么也没做。有人知道这个错误吗?我试了一下,但什么也没找到。它也与其他条目一起发生。

谢谢。

1 个答案:

答案 0 :(得分:0)

MySQL使用; 标记语句的结尾。

定义过程,函数或触发器时,将使用多个语句。

您需要告诉mysql函数/过程/触发语句的结尾在哪里。

如果键入 delimeter // ,我将使用 // 表示语句的结尾。

所以这个块:

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具有常规行为。