`
feisan
  • 浏览: 14797 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

UPDATE or INSERT?

SQL 
阅读更多

很多时候我们会碰到这样的需求:要往数据表里记录一些数据,如果这些数据是第一次记录,那么要执行INSERT操作,如果以前记录过了,那就指向UPDATE操作。

最直接的处理方法,就是先SELECT查询一次,看该条数据是否已经存在,如果已存在就UPDATE,如果不存在就INSERT。这种处理的缺点是,不管怎样,都要先查询一次。

昨天看the art of sql,提到了一种处理方式,先直接UPDATE,通常UPDATE执行之后,会返回更新记录的数目:如果为零,说明改数据不存在,再执行一次INSERT;如果不为零,说明已经UPDATE成功了。这个办法看起来还是不错的。

分享到:
评论

相关推荐

    mysql如何实现 如果存在就update更新,不存在再insert插入.zip

    <insert id="insertOrUpdate" parameterType="YourDomainClass"> INSERT INTO table_name (column1, column2, num) VALUES (#{property1}, #{property2}, #{property3}) ON DUPLICATE KEY UPDATE num = #{...

    Mybatis 中的insertOrUpdate操作

    在Mybatis中,`insertOrUpdate`操作是一种将数据插入数据库,如果存在相同的唯一标识则更新已有数据的方法。这种操作在数据库编程中非常实用,因为它允许开发者以简洁的方式处理增删改查(CRUD)操作。在MySQL中,...

    UPDATE/INSERT/DELETE 语句

    在数据库管理中,UPDATE、INSERT 和 DELETE 是三个非常重要的 SQL 语句,它们分别用于修改、添加和删除数据。在本实验中,我们将通过实际操作来深入理解这三个语句的用法。 首先,我们来看 `UPDATE` 语句。这个语句...

    EF(EntityFramework) 插入或更新数据报错的解决方法

    报错信息:Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. See ...

    我们一起读文档,学习MyBatis(二)----------- Insert Update Delete操作的实现

    在本篇博文中,我们将深入探讨MyBatis框架在Insert、Update和Delete操作中的实现细节。MyBatis是一个优秀的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者注解中,提供了灵活的数据映射机制,极大地简化...

    oracle执行update语句时卡住问题分析及解决办法

    这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住。由于我的java程序...

    django-bulk-update-or-create:适用于Django模型管理员的`bulk_update_or_create`

    如果记录数很大, QuerySet.update_or_create的慢会很突出:使用起来非常实用,但它总是执行一次SELECT然后执行一次INSERT (如果 select 没有返回任何内容)或UPDATE / .save (如果它做了)。 网上查了一下,确实...

    Dapper.Extend.rar

    Dapper.Contrib重新封装 添加了 批量 InsertOrUpdate方法,其中 insert 使用了 SqlBulkCopy .netFrameWork 4.6.1框架 netCore后续添加 InsertOrUpdate 仅支持 sqlserver

    MSSQL2005 INSERT,UPDATE,DELETE 之OUTPUT子句使用实例

    在SQL Server 2005中,`OUTPUT`子句是一个强大的特性,它允许你在执行`INSERT`, `UPDATE`, 或 `DELETE`语句时捕获受影响的数据行。这个功能非常实用,因为它允许开发者实时跟踪数据库中的变化,而无需额外的查询来...

    oracle的update的五种方式

    例如:`CREATE OR REPLACE PROCEDURE update_procedure AS BEGIN UPDATE t_join_situation SET join_state='1' WHERE year='2011'; END`。这种方式可以批量更新数据,并且可以实现复杂的逻辑操作,但需要注意存储...

    PHP新手用的Insert和Update语句构造类

    这里介绍的`sqlstr`类提供了一个简单的方式来构造`INSERT`和`UPDATE` SQL语句,使得数据库操作更为便捷。让我们深入探讨这个类的工作原理以及如何使用它。 首先,`sqlstr`类有两个私有属性:`$param`和`$tablename`...

    8. insert,update注入1

    insert,update注入1"描述的是一种SQL注入攻击的实例,它涉及到通过输入恶意的SQL代码来获取或篡改数据库中的信息。下面将详细解释这种攻击的各个步骤和涉及的知识点。 1. **注入获取数据库**: 攻击者尝试通过在...

    SQL的ORDER BY 关键字,INSERT INTO语句,UPDATE语句,DELETE语句

    在SQL(Structured Query Language)中,`ORDER BY`、`INSERT INTO`、`UPDATE`和`DELETE`是四个非常基础且重要的操作关键字,它们分别用于数据的排序、插入、修改和删除。 **ORDER BY 关键字** `ORDER BY`用于对SQL...

    MyBatis sql-select-insert-update-delete

    误点Uninject language or reference导致xml错误警告都不显示(恢复)

    gorm-bulk-insert:使用gorm实现BulkInsert

    Gorm Bulk Insert是一个使用实现批量插入/更新Gorm Bulk Insert的库。 目的 保存批量记录 安装 $ go get github.com/sunary/gorm-bulk-insert 这个库依赖于 gorm,除非你已经安装了 gorm,否则下面的命令也是必要的...

    Delphi7.1 Update

    * This update can not be removed after it is installed.* You will need the original Delphi 7 installation CD available to install this update.* To install this update from the CD, insert the CD, and ...

    trigger触发器trigger触发器trigger触发器

    create or replace trigger insert_person after insert on person for each row begin insert into person2 values(:new.id,:new.name,:new.password); end; create or replace trigger update_person after ...

Global site tag (gtag.js) - Google Analytics