相关疑难解决方法(0)

"INSERT IGNORE"vs"INSERT ... ON DUPLICATE KEY UPDATE"

在执行INSERT包含许多行的语句时,我想跳过可能导致失败的重复条目.经过一些研究,我的选择似乎是使用:

  • ON DUPLICATE KEY UPDATE 这意味着需要花费一些不必要的更新,或者
  • INSERT IGNORE 这意味着邀请其他类型的未能在未经宣布的情况下失败.

我对这些假设是对的吗?简单地跳过可能导致重复的行并继续执行其他行的最佳方法是什么?

mysql insert

820
推荐指数
9
解决办法
82万
查看次数

如何将PostgreSQL"merge_db"(又称upsert)函数转换为MySQL

直接从手册,这是PostgreSQL中merge_db规范示例:

CREATE TABLE db (a INT PRIMARY KEY, b TEXT);

CREATE FUNCTION merge_db(key INT, data TEXT) RETURNS VOID AS
$$
BEGIN
    LOOP
        -- first try to update the key
        UPDATE db SET b = data WHERE a = key;
        IF found THEN
            RETURN;
        END IF;
        -- not there, so try to insert the key
        -- if someone else inserts the same key concurrently,
        -- we could get a unique-key failure
        BEGIN
            INSERT INTO db(a,b) VALUES (key, …
Run Code Online (Sandbox Code Playgroud)

mysql sql postgresql upsert

1
推荐指数
1
解决办法
1353
查看次数

标签 统计

mysql ×2

insert ×1

postgresql ×1

sql ×1

upsert ×1