Has*_*anG 3 sql t-sql sql-server-ce sql-server-ce-4
我正在尝试更新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
Run Code Online (Sandbox Code Playgroud)
还试过这个:
UPDATE EstateImages SET EstateID =
(SELECT EstateID FROM Estates WHERE TempKey = EstateImages.TempKey)
Run Code Online (Sandbox Code Playgroud)
我有错误:
There was an error parsing the query.
[ Token line number = 1, Token line offset = 37, Token error = SELECT ]
Run Code Online (Sandbox Code Playgroud)
如果您查看联机丛书或其他参考,您将发现在SQL Server CE中无法执行此操作.
- No FROM子句
- 没有相关的子查询
基本上,UPDATE语句可以引用的唯一数据是正在更新的行中的数据.
我发现只有两种方法可以解决这个问题:
1.客户端应用运行一个选择,然后触发一个或多个直接更新
2.插入新值,然后删除旧值
第一个是CE(据我所知)打算如何工作.例如,没有T-SQL,因此需要在应用程序中嵌入IF块和其他过程逻辑,而不是SQL.
第二个模仿UPDATE在触发器中的样子; 删除和插入.如果您重新构建数据以使其成为可能,那么它非常有效.
两者都不是"伟大的",但CE真的意味着"你可以逃脱的最少".它几乎就像是一个稍微浮华的持久性引擎(以funk灵活格式保存到磁盘),而不是真正的数据库引擎.
一旦你习惯了它的局限性,以及解决它们的方法,它就会非常有用.对于特定任务.