sql – 在MS访问中进行升级
发布时间:2020-12-12 07:46:04 所属栏目:MsSql教程 来源:网络整理
导读:我需要为MS-Access 2000编写SQL查询,以便在存在时更新行,但如果不存在则插入. (我相信这被称为“upsert”) 即 如果行存在… UPDATE Table1 SET (...) WHERE Column1='SomeValue' 如果它不存在…… INSERT INTO Table1 VALUES (...) 这可以在一个查询中完成吗
我需要为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指出这一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Sql语句与存储过程查询数据的性能测试实现代码
- 服务器配置sqlserver远程连接
- MSSQLSERVER CAN NOT START AFTER ENABLE & DIABLE VIA
- 解决mysql ERROR 1045 (28000)-- Access denied for user问
- SQL Server数据库迁移之用户名问题
- SQLServer2000安装提示挂起的处理办法
- sql-server – 在TSQL中,你如何从int转换为datetime并给出年
- sql-server – SQL Server:检查其他表中是否存在所有行
- mysql实现随机查询经验谈
- 数据库 – 将`tsv`文件插入postgresql数据库