各数据库insert or update

本文介绍了在MySQL、PostgreSQL和Oracle数据库中如何实现InsertOrUpdate操作。MySQL使用ON DUPLICATE KEY UPDATE语句;PostgreSQL则利用ON CONFLICT更新已存在的记录;Oracle通过MERGE INTO语法实现。这些方法有助于避免重复数据并保持数据库一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

各数据库insert or update

最进使用beego时需要使用insertorupdate功能,但是beego1.6中并没有实现。顾想自己实现一个,查了下各数据库insetorupdate语句,总结在这里。

- mysql:

  • INSERT INTO tablename () VALUES () ON DUPLICATE KEY UPDATE ...
  • 列如:INSERT INTO tablename (id,name) VALUES (1,'ooo') ON DUPLICATE KEY UPDATE id=1,name='qqqq'

- posetgres:

  • INSERT INTO tablename () VALUES () ON CONFLIT (冲突列名) KEY UPDATE SET ...
    -列如:INSERT INTO tablename (id,name) VALUES (1,'ooo') ON CONFLIT (id) UPDATE SET id=1,name='qqqq'

- ORACLE:

  • MERGE [INTO [schema .] table [t_alias]
    USING [schema .] { table | view | subquery } [t_alias]
    ON ( condition )
    WHEN MATCHED THEN merge_update_clause
    WHEN NOT MATCHED THEN merge_insert_clause;

  • **列如:MERGE INTO T T1
    USING (SELECT '1001' AS a,2 AS b FROM dual) T2
    ON ( T1.a=T2.a)
    WHEN MATCHED THEN
    UPDATE SET T1.b = T2.b
    WHEN NOT MATCHED THEN
    INSERT (a,b) VALUES(T2.a,T2.b);

oracle merge into为全表扫描查询 on中的条件然后进行相关操作,使用时应慎重。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值