相关疑难解决方法(0)

如何在MySQL中"插入,如果不存在"?

我开始使用谷歌搜索,发现这篇文章讨论了互斥表.

我有一张约有1400万条记录的表格.如果我想以相同的格式添加更多数据,有没有办法确保我想要插入的记录不存在而不使用一对查询(即,一个查询要检查,一个要插入是结果集是空)?

unique对某个字段的约束是否保证insert如果它已经存在则会失败?

似乎只有一个约束,当我通过php发出插入时,脚本呱呱叫.

php mysql sql performance primary-key

781
推荐指数
9
解决办法
66万
查看次数

在PostgreSQL中重复更新时插入?

几个月前,我从Stack Overflow的答案中学到了如何使用以下语法在MySQL中一次执行多个更新:

INSERT INTO table (id, field, field2) VALUES (1, A, X), (2, B, Y), (3, C, Z)
ON DUPLICATE KEY UPDATE field=VALUES(Col1), field2=VALUES(Col2);
Run Code Online (Sandbox Code Playgroud)

我现在切换到PostgreSQL,显然这是不正确的.它指的是所有正确的表,所以我认为这是使用不同关键字的问题,但我不确定PostgreSQL文档中的哪个被覆盖.

为了澄清,我想插入几个东西,如果它们已经存在则更新它们.

sql postgresql upsert sql-merge

611
推荐指数
15
解决办法
40万
查看次数

为什么此规则不能防止重复的密钥违规?

(postgresql)我试图将COPYcsv数据放入表中,但是我遇到了重复的密钥违规错误,并且没有办法告诉COPY我们忽略这些错误,所以按照互联网的智慧我尝试添加这个规则:

CREATE OR REPLACE RULE ignore_duplicate_inserts AS
   ON INSERT TO mytable
   WHERE (EXISTS ( SELECT mytable.id
           FROM mytable
          WHERE mytable.id = new.id)) DO NOTHING;
Run Code Online (Sandbox Code Playgroud)

为了避免这个问题,但我仍然得到那些错误 - 任何想法为什么?

postgresql copy rules insert duplicates

8
推荐指数
2
解决办法
5098
查看次数

将唯一值插入postgresql

我在postgresql中使用下面的命令创建一个表.

CREATE TABLE someTable (
    id serial primary key,
    col1 int NOT NULL,
    col2 int NOT NULL,
    unique (col1, col2)
);
Run Code Online (Sandbox Code Playgroud)

然后我执行2个插入语句.

  1. insert into someTable (col1,col2) values(1,11),(1,12);

    它的工作

  2. insert into someTable (col1,col2) values(1,13),(1,14),(1,11);

    得到错误(key(col1,col2)=(1,11)已经存在.

但我需要避免重复对.怎么可能?

我试试这个

x86_64-pc-linux-gnu上的PostgreSQL 9.5.0,由gcc编译的gcc(Ubuntu 4.8.2-19ubuntu1)4.8.2,64位和PostgreSQL 9.3,由gcc编译(Ubuntu 4.8. 2-19ubuntu1)4.8.2,64位

但我得到了错误

执行两个语句后我需要这样做.

(1,11),(1,12),(1,13),(1,14)
Run Code Online (Sandbox Code Playgroud)

sql sql-insert postgresql-9.3

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

使用knexjs进行插入忽略

我遇到了这个问题,我想要使用knexjs插入一组数据.但我希望插入忽略重复,即只有在数据不存在时才插入.我可以做这个

knex('rates').insert(allRates);

但我想知道ignore如果它存在,我可以使用修改器.我也不想做knex.raw 谢谢.

mysql sql knex.js

2
推荐指数
2
解决办法
1741
查看次数

如何在 postgresql 9.3 中插入​​批量行并忽略重复项

我有很多行数据要插入到一个表中。表中已有数据。当我像这样进行批量插入时,

INSERT INTO permission(username, permission) values(('john','ticket_view'), ('john','ticket_modify'), ('john','ticket_approve'));
Run Code Online (Sandbox Code Playgroud)

但是我的表已经有一行john, ticket_view在这种情况下我上面的插入查询以错误结束duplicate key value violates unique constraint

如何在 postgresql 9.3 中忽略这个重复问题?我只想插入所有行。如果存在类似的行,我想忽略它。我怎样才能做到这一点?我欢迎你的帮助。

postgresql upsert on-duplicate-key postgresql-9.3

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