我正在尝试在sql server精简版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.客户端应用运行一个select,然后触发一个或多个直接更新 2.插入新值,然后删除旧值
首先是CE的工作原理(据我所知)。例如,由于没有T-SQL,因此IF块和其他过程逻辑需要嵌入到应用程序中,而不是SQL中。
第二个模拟了触发器中UPDATE的外观;删除和插入。并且只要您重新组织数据以使其成为可能,它就会非常有效。
两者都不是“伟大的”,但CE确实意味着“您可以摆脱的最少”。几乎就像是一个稍微有点浮夸的持久性引擎(以放克的灵活格式将内容保存到磁盘),而不是真正的数据库引擎一样。
一旦习惯了它的局限性以及解决这些局限的方法,它就会非常有用。对于特定任务。