首页 > 解决方案 > 限制器澄清 MySQL

问题描述

 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,我希望我的“完成”列(默认为否)切换到“是”。

谢谢你。

标签: mysqllimitdelimitercloud9

解决方案


mysql使用 标记语句的结束。

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

您需要告诉 mysql function/procedure/trigger statement 的结尾在哪里。

如果类型分隔符 //我将使用//来指示语句的结束。

所以这个块:

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 ;

并且 每次我将分隔符恢复为; .

^^^^^^^ 你这样做是为了拥有 mysql 的常规行为。


推荐阅读