`
chakey
  • 浏览: 364405 次
  • 性别: Icon_minigender_1
  • 来自: 水星
社区版块
存档分类
最新评论

MySQL中on duplicate key update 在PostgesSQL中的实现方式

阅读更多

 

MySQL中on duplicate key update username = VALUES(username),maxdate = VALUES(maxdate),

在PostgresSQL中如何实现呢?

 

MySQL中的语句:

insert into db select distinct username ,mindate,maxdate from test_table on duplicate key update username = VALUES(username),maxdate = VALUES(maxdate);

 

PostgresSQL中实现:

步骤一:创建表

CREATE TABLE db (username TEXT, userid TEXT ,mindate TEXT ,maxdate TEXT);

 

步骤二:创建唯一索引

CREATE UNIQUE INDEX username_index ON db (username);

 

步骤三:创建更新函数

CREATE FUNCTION merge_db(uname TEXT, uid TEXT ,mind TEXT , maxd TEXT) RETURNS VOID AS

$$

BEGIN

    LOOP

        -- first try to update the username

        UPDATE db SET maxdate = maxd WHERE username = uname;

        IF found THEN

            RETURN;

        END IF;

        -- not there, so try to insert the username

        -- if someone else inserts the same useridconcurrently,

        -- we could get a unique-useridfailure

        BEGIN

            INSERT INTO db(username,userid,mindate,maxdate) VALUES (uname, uid, mind,maxd);

            RETURN;

        EXCEPTION WHEN unique_violation THEN

            -- do nothing, and loop to try the UPDATE again

        END;

    END LOOP;

END;

$$

LANGUAGE plpgsql;

 

步骤四:测试案例

select merge_db('user_one','279470','20101011','20101011');

select merge_db('user_two,'279470','20101011','20101012');

select merge_db('user_one','279470','20101011','20101012');

分享到:
评论

相关推荐

    [mysql]mysql通过on duplicate key update实现批量插入或更新(csdn)————程.pdf

    在MySQL数据库中,`ON DUPLICATE KEY UPDATE` 是一个非常实用的特性,它允许你在执行INSERT语句时,如果插入的数据违反了唯一性约束(即存在相同的唯一索引),则自动执行UPDATE操作来更新已有记录。这个功能在处理...

    mysql数据库Insert语句后面加ON DUPLICATE KEY UPDATE,保证唯一性1

    当你在`INSERT`语句后添加`ON DUPLICATE KEY UPDATE`,如果新插入的行违反了唯一性约束,MySQL将执行指定的`UPDATE`操作。这里的“唯一性”指的是任何具有唯一索引或主键的列。例如,如果你有一个名为`consume_locus...

    深入mysql ON DUPLICATE KEY UPDATE 语法的分析

    mysql “ON DUPLICATE KEY UPDATE” 语法如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列...

    Mysql中Insert into xxx on duplicate key update问题

    `VALUES()` 函数在这里起着关键作用,它允许你在`ON DUPLICATE KEY UPDATE`子句中引用新插入的值。`VALUES(b)` 指的是新插入记录的 `b` 字段值。 需要注意的是,`ON DUPLICATE KEY UPDATE` 只更新匹配到的行,而...

    mysql ON DUPLICATE KEY UPDATE语句示例

    在MySQL数据库中,`ON DUPLICATE KEY UPDATE` 是一个非常实用的特性,它允许你在插入新数据时,如果遇到重复的唯一键值,自动执行更新操作,而不是抛出错误。这个功能大大简化了数据处理的流程,特别是当你需要在一...

    MySQL的Replace into 与Insert into on duplicate key update真正的不同之处

    - 示例中,当再次尝试`INSERT`一个`a=3`的记录时,由于`b`字段在`ON DUPLICATE KEY UPDATE`部分被指定更新为'r5',所以原有记录的`b`字段被更新,而`c`字段保持不变。 - 对于`AUTO_INCREMENT`字段,`INSERT INTO ....

    MYSQL的REPLACE和ON DUPLICATE KEY UPDATE语句介绍解决问题实例

    ON DUPLICATE KEY UPDATE`都是MySQL提供的强大工具,它们可以帮助我们更高效、更精确地管理数据库中的数据,特别是处理需要确保数据唯一性和排序顺序的情况下。通过合理利用这些语句,我们可以减少数据库操作的复杂...

    深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析

    MySQL的`ON DUPLICATE KEY UPDATE`语法是一种特殊的数据插入机制,它允许你在尝试插入新记录时,如果遇到唯一约束冲突(比如主键或唯一索引的值已经存在),则自动更新已有记录。这个特性在处理数据导入、同步或批量...

    mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点实例分析

    在MySQL中,`REPLACE INTO` 和 `INSERT INTO ON DUPLICATE KEY UPDATE` 是两种处理数据插入时冲突的方法,主要用于处理当试图插入一条记录,而该记录的唯一键或主键已经在表中存在的情况。这两种方法都可以实现如果...

    Mysql ON DUPLICATE KEY Update

    MySQL中的`ON DUPLICATE KEY UPDATE`语句是一个非常实用的功能,它允许你在插入新记录时检查是否存在冲突的唯一键。如果遇到冲突(即试图插入的键已经存在),它会更新已有记录而不是抛出错误。这在处理批量导入或...

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

    在MySQL数据库中,如果你需要执行一个操作,即当数据存在时进行更新,如果不存在则进行插入,你可以使用`INSERT INTO...ON DUPLICATE KEY UPDATE`语句。这个功能强大的语句结合了`INSERT`和`UPDATE`操作,允许你在...

    MySQL中如何处理重复数据(Duplicate)?

    ON DUPLICATE KEY UPDATE 语句是在 MySQL 中处理重复数据的常用方法。该语句在插入数据时,如果遇到唯一键冲突(即主键或有唯一索引的字段),则会执行更新操作。示例: INSERT INTO table_name (col1, col2, col3...

    mysql 原生语句中save 的写法汇总.docx

    在 MySQL 中,我们可以使用 ON DUPLICATE KEY UPDATE 关键字来实现数据不存在则插入,存在则更新的操作。判断数据重复的逻辑依然是主键冲突或者唯一键冲突。 例如,以下是使用 ON DUPLICATE KEY UPDATE 关键字的...

    insert into … on duplicate key update / replace into 多行数据介绍

    ON DUPLICATE KEY UPDATE` 和 `REPLACE INTO` 是MySQL中处理批量插入并更新已有数据的两种有效策略,它们提供了在保持数据完整性和性能之间平衡的解决方案。根据具体业务需求和数据约束,选择合适的方法来优化数据...

    INSERT INTO .. ON DUPLICATE KEY更新多行记录

    ON DUPLICATE KEY UPDATE` 是 MySQL 数据库中的一种高效操作,它结合了插入新记录和更新已有记录的功能。这个语句主要用于处理唯一性约束冲突,如 PRIMARY KEY 或 UNIQUE 索引的情况。当试图插入的记录与现有记录在...

    MySQL中实现插入或更新操作(类似Oracle的merge语句)

    如果需要在MySQL中实现记录不存在则insert,不存在则update操作。可以使用以下语句: 更新一个字段: INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,...

Global site tag (gtag.js) - Google Analytics