mysql - MySQL 限制器说明

标签 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 后切换为"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/

相关文章:

mysql - 选择具有 IN 范围和 LIMIT 的查询

mysql - MySQL 数据库中历史数据的最佳实践

mysql - AUTO_INCREMENT达到极限后如何处理?

python - 如何用大数据集在python中查找和替换字符串

python - CSV 编写器双引号

php - 用php查询mysql中的两个表困难

mysql - 如何从 MySQL 查询返回字段类型?

c# - 将带有分隔符的字符串解析为字典

php - Laravel 5 更新单行限制不起作用

MySQL 查询中的项目数 “OR clause”