触发器创建语法:
create trigger 触发器名before/after insert/delete/update on 表名for each row |

在MySQL终端中,使用上述语法时会报错,因为SQL语句末尾需要加分号; ,但是终端中一旦出现分号,系统就认为触发器创建结束,导致出错,所以需要在使用前修改系统默认的结束标记,例如//
delimiter // |

这样在SQL语句中的分号就不会认为是触发器创建完毕,只有遇到指定结束符才完成触发器的创建。
文章作者: Leon
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Leon!
相关推荐
2015-11-09
如何在 MySQL 中实现对10亿条数据的判重
在实际的数据库应用中,我们经常需要处理大规模的数据集。当面临一个包含10亿条数据的数据库时,如何高效地进行判重操作是一个具有挑战性的问题。在本篇博客中,我们将探讨如何在 MySQL 中实现对10亿条数据的判重。 1. 使用索引索引是提高数据库查询性能的重要机制之一。在判重操作中,我们可以创建一个唯一索引来确保数据的唯一性。在 MySQL 中,可以使用 CREATE UNIQUE INDEX 命令来创建唯一索引。 CREATE UNIQUE INDEX idx_unique_column ON your_table (column_name); 通过在需要判重的列上创建唯一索引,MySQL 将在插入或更新数据时自动检查唯一性,并拒绝重复的值。这样可以有效地避免重复数据的插入。 2. 使用临时表另一种处理大规模数据的方法是使用临时表。我们可以创建一个临时表,将数据导入其中,并在临时表上执行判重操作。这种方法可以减少对原始表的影响,并提高查询性能。 首先,创建一个临时表: CREATE TEMPORARY TABLE temp_tableSELECT DISTINCT colum...

2024-12-25
解决 MySQL 中的字符集冲突问题:Illegal mix of collations
在使用 MySQL 进行数据查询时,尤其是涉及到 JOIN 操作时,您可能会遇到以下错误信息: Illegal mix of collations (utf8mb4_0900_ai_ci,IMPLICIT) and (utf8mb4_unicode_ci,IMPLICIT) for operation '=' 这个错误通常表明在进行连接操作时,涉及的字段使用了不同的字符集或排序规则(collation),导致查询失败。本文将探讨这个问题的根源,并提供解决方案和示例。 问题背景在 MySQL 中,字符集(Character Set)和排序规则(Collation)用于定义如何存储和比较字符串数据。常见的字符集包括 utf8mb4,而排序规则则决定了字符串比较的规则,如 utf8mb4_unicode_ci 和 utf8mb4_0900_ai_ci。 当您在 JOIN 查询中使用不同字符集或排序规则的字段时,MySQL 将无法正确执行比较,进而导致上述错误。 示例场景假设我们有两个表 users 和 orders,它们的结构如下: CREATE TABLE ...

2024-10-03
MySQL 中的 `SQL_CALC_FOUND_ROWS` 技术详解
在进行数据库查询时,特别是涉及分页(pagination)操作时,如何高效地获取总记录数是一个常见挑战。MySQL 提供了 SQL_CALC_FOUND_ROWS 选项,以便在执行查询时同时获取符合条件的总行数。本文将深入探讨 SQL_CALC_FOUND_ROWS 的用法、优缺点以及最佳实践。 什么是 SQL_CALC_FOUND_ROWS?SQL_CALC_FOUND_ROWS 是一个 MySQL 查询选项,用于在执行 SELECT 查询时计算符合条件的总行数,而不考虑 LIMIT 限制。通过这种方式,开发者可以在获取当前页数据的同时,得到符合条件的所有记录的总数。 语法使用 SQL_CALC_FOUND_ROWS 的基本语法如下: SELECT SQL_CALC_FOUND_ROWS column1, column2FROM table_nameWHERE conditionLIMIT offset, row_count; 在执行上述查询后,可以使用以下语句获取总行数: SELECT FOUND_ROWS(); 示例假设我们有一个名为 employees 的表,包含...
2018-12-30
[转载] 新手必看:一步到位之InnoDB
作/译者:叶金荣(imysql#imysql.com>),来源:http://imysql.com,欢迎转载。 前言:MySQL发展到今天,InnoDB引擎已经作为绝对的主力,除了像大数据量分析等比较特殊领域需求外,它适用于众多场景。然而,仍有不少开发者还在“执迷不悟”的使用MyISAM引擎,觉得对InnoDB无法把握好,还是MyISAM简单省事,还能支持快速COUNT(*)。本文是由于最近几天帮忙处理discuz论坛有感而发,希望能对广大开发者有帮助。 1. 快速认识InnoDBInnoDB是MySQL下使用最广泛的引擎,它是基于MySQL的高可扩展性和高性能存储引擎,从5.5版本开始,它已经成为了默认引擎。InnODB引擎支持众多特性: a) 支持ACID,简单地说就是支持事务完整性、一致性;b) 支持行锁,以及类似ORACLE的一致性读,多用户并发;c) 独有的聚集索引主键设计方式,可大幅提升并发读写性能;d) 支持外键;e) 支持崩溃数据自修复;InnoDB有这么多特性,比MyISAM来的优秀多了,还犹豫什么,果断的切换到InnoDB引擎吧 :) 2....
2019-09-04
MySQL `Too many connections` 错误解决方案
当 MySQL 数据库达到最大连接数限制时,会出现 Too many connections 错误。这种情况通常意味着并发连接超出了 MySQL 的配置限制。以下是一些解决该问题的常见方法。 1. 增加最大连接数1.1 修改配置文件您可以通过修改 MySQL 配置文件(my.cnf 或 my.ini)中的 max_connections 参数来增加最大连接数。找到配置文件并修改或添加以下行: [mysqld]max_connections = 200 # 根据需要调整此值 1.2 动态调整如果您希望立即生效而无需重启 MySQL,可以使用以下 SQL 命令来动态调整: SET GLOBAL max_connections = 200; # 根据需要调整此值 注意:动态设置的值在 MySQL 重启后将失效,需要在配置文件中进行持久化修改。 2. 优化应用程序2.1 连接池使用连接池技术来复用数据库连接,而不是每次都创建新连接。许多框架和库(如 PDO、MySQLi 等)都支持连接池。 2.2 关闭不必要的连接确保在完成数据库操作后关闭连接,避免长时间保持连接空闲。 ...

2024-11-12
The MySQL server is running with the --read-only option so it cannot execute this statement
MySQL 只读模式导致的脚本执行失败问题在使用 MySQL 数据库进行开发和运维时,可能会遇到一些配置导致的意外问题。最近,我在执行数据库脚本时遇到了一个常见错误:“The MySQL server is running with the –read-only option so it cannot execute this statement”。本文将分享这个问题的原因以及如何解决它。 问题背景在一次服务升级过程中,由于运维同事设置了 MySQL 的只读模式,导致我无法执行写入操作。只读模式是 MySQL 的一个配置选项,它限制了数据库的写入操作,确保数据在特定时间内不会被修改。这种模式通常用于以下场景: 数据库备份期间,防止数据被更改。 主从复制架构中,从数据库需要保持只读状态,以确保数据一致性。 错误信息当我尝试执行一个更新操作时,收到以下错误信息: ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this state...
评论
公告
记录技术实践,分享学习与思考。



