sql – 在MS访问中进行升级

我需要为MS-Access 2000编写SQL查询,以便在存在时更新行,但如果不存在则插入. (我相信这被称为“upsert”)

如果行存在…

UPDATE Table1 SET (...) WHERE Column1='SomeValue'

如果它不存在……

INSERT INTO Table1 VALUES (...)

这可以在一个查询中完成吗?

解决方法

我通常首先运行insert语句然后检查是否发生了错误3022,这表明该行已经存在.所以像这样:
On Error Resume Next
CurrentDb.Execute "INSERT INTO Table1 (Fields) VALUES (Data)",dbFailOnError
If Err.Number = 3022 Then
    Err.Clear        
    CurrentDb.Execute "UPDATE Table1 SET (Fields = Values) WHERE Column1 = 'SomeValue'",dbFailOnError
ElseIf Err.Number <> 0 Then
    'Handle the error here
    Err.Clear
End If

EDIT1:我想提一下,我在这里发布的是一个非常常见的解决方案,但你应该知道,计划错误并将它们作为程序正常流程的一部分通常被认为是一个坏主意,特别是如果还有其他方法达到相同的结果.感谢RolandTumble指出这一点.

相关文章

本篇内容主要讲解“sqlalchemy的常用数据类型怎么使用”,感...
今天小编给大家分享一下sqlServer实现分页查询的方式有哪些的...
这篇文章主要介绍“sqlmap之osshell怎么使用”,在日常操作中...
本篇内容介绍了“SQL注入的知识点有哪些”的有关知识,在实际...
1. mssql权限sa权限:数据库操作,文件管理,命令执行,注册...
sql执行计划如何查看?在SPL庞大的数据中我们不知道如何查看...