我正在尝试更新 sql server Compact Edition 4.0 中两个表之间的值。我的sql如下:
UPDATE ei SET ei.EstateID=e.EstateID FROM EstateImages ei
INNER JOIN Estates e ON e.TempKey=ei.TempKey
还尝试过这个:
UPDATE EstateImages SET EstateID =
(SELECT EstateID FROM Estates WHERE TempKey = EstateImages.TempKey)
我遇到错误:
There was an error parsing the query.
[ Token line number = 1, Token line offset = 37, Token error = SELECT ]
如果您查看联机丛书或其他参考资料,您会发现在 SQL Server CE 中无法执行此操作。
- 没有 FROM 子句
- 没有相关子查询
基本上,UPDATE 语句可以引用的唯一数据是正在更新的行中的数据。
我发现只有两种方法可以解决这个问题:
1. 客户端应用程序运行一个选择,然后触发一个或多个直接更新
2.插入新值,然后删除旧值
第一个是 CE(据我所知)的工作原理。例如,没有 T-SQL,因此 IF 块和其他过程逻辑需要嵌入到应用程序中,而不是 SQL。
第二个模仿触发器中 UPDATE 的样子;一个删除和一个插入。如果您重新构建数据以使其成为可能,那么它是非常有效的。
两者都不是“伟大的”,但 CE 确实意味着“你至少可以逃脱惩罚”。它几乎就像是一个稍微华丽的持久性引擎(以一种灵活的格式将内容保存到磁盘),而不是一个真正的数据库引擎。
然而,一旦您习惯了它的局限性以及解决这些局限性的方法,它就会非常有用。对于特定任务。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)