用于将重复行插入另一个表的插入触发器之前

2023-12-06

我有一张桌子叫tblspmaster其中 sp 列我有唯一索引,因此不会插入重复项,但我想将重复行插入到tblspduplicate。所以我决定为此编写触发器。 IN 主表是tblspmaster记录将使用加载文件插入mysql

create trigger tblspmaster_noduplicate
before insert on tblspmaster
for each row
begin
  if ( select count(sp) from tblspmaster where sp=new.sp > 0 )then
    insert into tblspduplicate (sp,FileImported,AMZFileName)   values (NEW.sp,NEW.FileImported,NEW.AMZFileName)
  END
END

我有问题清单

  1. 这是停止重复并插入另一个的正确方法吗 桌子 ?

  2. 我的触发器未执行,因为它显示一些语法错误

错误响应是Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'END END' at line 7

****************


就您而言,触发器存在以下几个问题:

  1. 你没有;插入语句后
  2. IF声明应以END IF和一个分号,不仅仅是END
  3. 你必须改变分隔符DELIMITER command
  4. use EXISTS()而不是COUNT()

话虽如此,你的触发器可能看起来像

DELIMITER $$
CREATE TRIGGER tblspmaster_noduplicate
BEFORE INSERT ON tblspmaster
FOR EACH ROW
BEGIN
  IF (EXISTS(SELECT * FROM tblspmaster WHERE sp = NEW.sp)) THEN
    INSERT INTO tblspduplicate (sp,FileImported,AMZFileName)   
    VALUES (NEW.sp, NEW.FileImported, NEW.AMZFileName);
  END IF;
END$$
DELIMITER ;

Here is SQLFiddle demo

Use IGNORE你的条款LOAD DATA INFILE陈述。 MySql 会将错误(违反唯一约束)视为警告,从而有效地丢弃重复项。

加载数据文件
如果指定 IGNORE,则将跳过在唯一键值上重复现有行的输入行。

LOAD DATA LOCAL INFILE 'E://31october//SP//sp_files_sample1//400k sp00 6-19 E.csv' 
IGNORE  
INTO TABLE tblspmaster 
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' 
LINES TERMINATED BY '\n' 
-- IGNORE 1 LINES

Note:仅供参考,重复行的插入失败将在 auto_increment 的值中留下间隙SCN column.


您可以考虑另一种可能在性能方面更可取的方法:

  1. 创建没有约束和索引的临时临时表
  2. use LOAD DATA INFILE填充暂存表
  3. having tblspmaster和暂存表并使用INSERT ... SELECT语法插入所有重复项tblspduplicate一气呵成
  4. 仅将临时表中不存在的行插入tblspmaster一口气再次
  5. TRUNCATE or DROP暂存表
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于将重复行插入另一个表的插入触发器之前 的相关文章

  • MySQL 导入 125000 行 CSV 的最快方法?

    这是我第一次使用 MySQL 除了对现有数据库进行一些基本查询之外 所以我不擅长解决这个问题 我有一个包含 125 000 条记录的 CSV 我想将其加载到 MySQL 中 我安装了版本 8 和工作台 我使用导入向导加载 CSV 它开始导入
  • Mysql - Mysql2::错误:字符串值不正确:

    所以我建造了一个刮刀并拉动一些物体 问题是有些是外语 它使 mysql 数据库有点崩溃 这是我得到的错误 知道我能用这个做什么吗 谢谢 Mysql2 错误 列的字符串值不正确 xC5 x8Dga 第 1 行的 描述 插入sammiches
  • Java 从 SQL 数组获取 ResultSet 失败

    我试图从数据库中检索电子邮件地址 但没有成功 我的代码如下 Main System out println PortfolioData getEmails 58 So Far Returning null 投资组合数据 public sta
  • 通过我的java代码导出数据库

    我想使用我的 java 代码导出我的 MySQL 数据库 但我还没有找到任何办法 我想要做的就是我的应用程序中有一个按钮作为 导出数据库 单击该按钮时 我的数据库应导出到指定的路径 我使用了以下代码 但它不起作用 Runtime runti
  • 在 MySQL 数据库中存储图像文件或 URL?哪个更好? [复制]

    这个问题在这里已经有答案了 可能的重复 在数据库中存储图像 是还是否 https stackoverflow com questions 3748 storing images in db yea or nay 数据库中的图像与文件系统中的
  • 使用mysql在一个查询中选择多个表中的子项总数

    我整个下午都在尝试处理一个查询 或两个或三个 以获得三个表的所有子表的计数 看看我的设计 用户表 id user name 1 foo 2 bar 赢表 id won user 1 1 2 1 3 2 绘制表格 id draw user 1
  • MYSQL中收盘价的简单移动平均线计算和更新表

    我可以使用一些帮助 最好是虚拟指南 来更新下表 CREATE TABLE SYMBOL day date NOT NULL open decimal 8 3 DEFAULT NULL high decimal 8 3 DEFAULT NUL
  • mysql语句中的*星号是什么意思?

    Ex mysql query SELECT FROM members WHERE id id 这意味着选择表中的所有列
  • 无法使用 Django 应用程序从容器连接到 MySQL docker 容器

    当我尝试从运行 Django 应用程序的 docker 容器连接到运行 MySQL 的容器时 出现以下错误 django db utils OperationalError 2003 Can t connect to MySQL serve
  • 在docker中使用MySQL数据库设置aspnetcore

    我正在尝试设置一个 docker compose 文件 其中包含 asp net core mysql 数据库和 phpmyadmin 的容器 设置我的 mysql 服务器没有问题 我可以使用 phpmyadmin 访问它 我的 asp n
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • 单行的总和值?

    我有一个 MySQL 查询 它返回由一系列 1 和 0 组成的单行 它用于进度条指示器 我现在在代码中对它进行求和 但我尝试对查询中的值求和 并意识到我无法使用 SUM 因为它们有很多列 但只有一行 有没有办法可以在查询中自动求和 就像这样
  • 如何以最少的查询次数获取帖子列表和关联标签

    我的表格结构如下 标签 更多的是一个类别 id 标签名称 描述 slug POSTS ID 标题 网址 邮戳 id idPost idTag USERS ID 用户名 userSlug VOTES id idPost idUser 每个帖子
  • ActiveRecord3死锁重试

    Rails 3 或 ActiveRecord 3 是否有任何插件可以复制旧版本死锁重试 http agilewebdevelopment com plugins deadlock retry插入 或者 该插件仍然适用于 Rails 3 吗
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 如何在Mysql中仅将不同的值从一个表复制到另一个表?

    我有一个大约 2 5GB 的 MySql 数据库 表 A 具有以下列 anoid query date item rank url 我刚刚创建了另一个仅包含列的表 b query and date 我想在查询列中插入所有不同的记录 及其各自
  • 忽略重复条目并在 EF Core 中的 DbContext.SaveChanges() 上提交成功条目

    我有一个 ASP Net Core 2 2 Web API 在我的一个控制器操作中 我向 MySQL 数据库表添加了一堆行 我使用的是 Pomelo 例如 dbContext AddRange entities dbContext Save
  • 在 MySQL 中使用 COUNT 时如何返回 0 而不是 null

    我使用此查询返回存储在 sTable 中的歌曲列表以及存储在 sTable2 中的总项目数 SQL queries Get data to display sQuery SELECT SQL CALC FOUND ROWS str repl
  • Mysql 创建定义器

    我创建了一个在 CentOS Web 服务器上运行的 Intranet Web 应用程序 该应用程序使用另一个本地服务器 始终是 CentOS 作为 MySQL 数据库 在数据库内部我创建了例程 这些例程总是这样开始 CREATE DEFI
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教

随机推荐

  • ng-model 作为二维数组中的变量

    p span span p
  • 检查 int 是否为素数 Java

    对 修复我的代码 帖子感到抱歉 编辑 与语法更多相关for循环比质数 现在也解决了 我的任务是从控制台获取一个 int 并打印出 在单独的行上 从 1 到 n 含 的所有素数 我的方法从 n 开始 检查是否为素数 然后将 n 递减 1 并循
  • 事件和自引用组件 vue.js

    我有允许 1 级线程的评论系统 意味着第一级评论看起来像 内容 线 其中线程可能有更多评论 我认为这对于自引用组件和带有插槽的列表很有用 但过了一会儿我不知道如何连接这个东西 SingleComment 组件如下
  • 时间列应使用什么数据类型

    在我的 Spark 应用程序中 我必须拆分时间和数据并将它们存储在单独的列中 如下所示 val df5 df4 withColumn read date date format df4 col date yyyy MM dd withCol
  • 在 R 中安装旧包时出错

    我正在尝试安装 0 6 2 版本的 tm 库 我已经从以下位置下载了 tar gz 文件archive并在 RStudio 中选择 工具 gt 存档 gt 打包存档文件 来安装它 但是 我收到以下错误 有人可以帮我解决这个问题吗 安装sou
  • 如何在 AWS Elastic Beanstalk 上运行 celery Worker?

    版本 姜戈 1 9 8 芹菜 3 1 23 django celery 3 1 17 Python 2 7 我正在尝试在 AWS Elastic Beanstalk 上运行我的 celery 工作线程 我使用 Amazon SQS 作为 c
  • 在头文件中声明一个返回二维数组的函数?

    我试图在我的头文件中声明一个返回二维数组的函数 鉴于我们已经知道数组的大小 如何实现这一点 以下是我目前正在做的事情 class Sample public char x y getArr void blah int x int y pri
  • PowerShell 输出的颜色重定向到文件

    dir颜色输出到文件 如果我在 Ubuntu 上运行以下命令 dharmatech dharmatech 01 tmp pwsh Command dir gt out txt 然后 cat 输出 dharmatech dharmatech
  • 周数和周日

    我有由 date 生成的当年周数和星期几 如下所示 week number date W week day date w 我需要格式化这个 我如何获得本周的开始日期 或者 week number 和 week day 是一个月中的哪一天 U
  • 如何通过最新的 Android 支持库正确使用向后兼容的 Vector Drawable?

    Vector Drawable 不久前已添加到支持库中 从那时起 API 发生了很多变化 Gradle 标志 初始化块 选择器 自定义 XML 属性等 问题是 现在如何正确使用它 在这些情况下支持 lib v25 图像视图 可绘制的文本视图
  • 如何实现 PHP/HTML 缓存

    我读过几本关于实现 php 缓存系统的指南 我的网站是自定义编码的 查询量相当大并且不断增长 包括这个 http www snipe net 2009 03 quick and dirty php caching 我完全理解它们 但页面的某
  • 无法在 Windows 10 Pro 上启动 docker?

    Problem 当我尝试启动 docker 桌面时 它给我留下了这个错误 Unable to create The running command stopped because the preference variable ErrorA
  • .NET 客户端通过 SSL 连接到 IBM MQ

    我从客户端获得了密钥文件 我需要使用它们通过 SSL 连接到 MQ 我们从客户那里得到的文件是 xxx crl xxx kdb xxx rdb xxx sth xxx tab 他们说的是客户端频道表 我正在尝试使用以下代码进行连接 他们说我
  • 将 UTC 日期时间字符串转换为本地日期时间

    我从来没有需要在 UTC 和 UTC 之间进行时间转换 最近有人请求让我的应用程序了解时区 但我一直在兜圈子 有关将本地时间转换为 UTC 的大量信息 我发现这些信息相当简单 也许我也做错了 但我找不到任何有关轻松将 UTC 时间转换为最终
  • 如何在C#中访问匿名类型的属性?

    我有这个 List nodes new List nodes Add new Checked false depth 1 id div d Id 我想知道是否可以获取匿名对象的 Checked 属性 我不确定这是否可能 尝试这样做 if n
  • 如何在 Angular 2 上实现自定义验证器?

    如何在 Angular 2 中实现自定义验证器 I found 这个笨蛋 constructor private fb FormBuilder this form fb group singleSelection Rio App valid
  • 为什么 C 应用程序不先打印消息然后接收用户输入

    我正在尝试编写一个打印提示并接受用户输入的 C 应用程序 我用 fgets 编写了一个简单的程序 但它确实工作正常 我正在使用 eclipse c c 工具包 当我保存 gt 构建 gt 运行时 控制台保持空白 如果我输入一些输入 程序就会
  • apc vs eaccelerator vs xcache

    我正在研究使用其中哪一个 但我真的找不到一个脱颖而出的 E加速器比APC 但APC维护得更好 Xcache更快 但其他的语法更简单 有人对使用哪些建议以及为什么使用有建议吗 APC 将包含在 PHP 6 中 我猜选择它是有充分理由的 它的安
  • vector.push_back 上的“glibc free():无效的下一个大小(快速)”?

    当我运行我的程序时 它偶尔会崩溃并给出以下错误 检测到 glibc pathtoexecutable free 下一个大小无效 快速 回溯导致一个成员函数只调用向量的push back函数 void Path add Position p
  • 用于将重复行插入另一个表的插入触发器之前

    我有一张桌子叫tblspmaster其中 sp 列我有唯一索引 因此不会插入重复项 但我想将重复行插入到tblspduplicate 所以我决定为此编写触发器 IN 主表是tblspmaster记录将使用加载文件插入mysql create