![]() |
1
340
看一看 http://sqlite.org/lang_conflict.html . 你想要的是:
请注意,如果表中已经存在行,则不在插入列表中的任何字段都将设置为NULL。这就是为什么要为
如果要在替换情况下保留特定字段值,而在插入情况下将字段设置为NULL,则也可以使用这种方法。
例如,假设你想离开
|
![]() |
2
101
你应该使用
第一个命令将插入记录。如果记录存在,它将忽略由于与现有主键冲突而导致的错误。 第二个命令将更新记录(现在肯定存在) |
![]() |
3
69
您需要在表上设置一个约束以触发“ conflict
然后您可以发布:
“从数据中选择*”将为您提供:
|
![]() |
4
36
先更新一下。如果 受影响的行计数 =0,然后插入。这是最简单的,适合所有人 关系数据库 |
![]() |
5
29
|
![]() |
6
20
Upsert
是你想要的。
请注意,此时实际单词“UPSERT”不是UPSERT语法的一部分。 正确的语法是
请注意
|
![]() |
7
6
如果没有主键,可以插入不存在的主键,然后进行更新。在使用此项之前,表必须至少包含一个条目。
|
![]() |
8
4
我相信你想要 UPSERT . “INSERT OR REPLACE”如果不使用该答案中的其他技巧,则会将未指定的任何字段重置为NULL或其他默认值。(INSERT或REPLACE的这种行为不同于UPDATE;它与INSERT完全相同,因为它实际上是INSERT;但是如果您想要的是updateif exists,那么您可能需要UPDATE语义,并且会对实际结果感到不快。)
|
![]() |
9
1
我认为有必要指出的是,如果你不完全理解怎么做,这里可能会有一些意想不到的行为 主键 独一无二的 互动。 例如,如果您只想在 姓名 不会抛出和异常,而是解决 通过替换冲突记录(使用相同的 ). Gaspard's his answer 上面。 声明,并依赖于一个单独的 更新 命令更新记录,一旦你知道该名称是没有采取。 |
![]() |
Flo · 分组依据中的SQL大小写 2 年前 |
![]() |
Mikael · 如何检查该值是否存在,并根据答案返回不同的值? 6 年前 |
![]() |
Igor Ostapiuk · Laravel检查属性存在 7 年前 |
![]() |
Harsh darji · 如何检查实体框架核心中与数据库的连接? 7 年前 |
![]() |
onlyf · VB-逐行读取文件检查是否存在 8 年前 |
![]() |
MSE · CODEIGNITER:检查成分是否存在 9 年前 |
![]() |
shay te · 使用带有常量字符串的mysql EXISTS 10 年前 |
|
A.E.K · ORA-00933:SQL命令在Groovy脚本中未正确结束 10 年前 |