小编典典

SQL Server Compact 4中的两个INNER JOINed表的更新

sql

我正在尝试在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 ]

阅读 156

收藏
2021-04-14

共1个答案

小编典典

如果您查看联机丛书或其他参考,则会发现您无法在SQL Server CE中执行此操作。
-无FROM子句
-无相关子查询

基本上,UPDATE语句可以引用的唯一数据是要更新的行中的数据。

我发现只有两种方法可以解决此问题:
1.客户端应用运行一个select,然后触发一个或多个直接更新
2.插入新值,然后删除旧值

首先是CE的工作原理(据我所知)。例如,由于没有T-SQL,因此IF块和其他过程逻辑需要嵌入到应用程序中,而不是SQL中。

第二个模拟了触发器中UPDATE的外观;删除和插入。并且只要您重新组织数据以使其成为可能,它就会非常有效。

两者都不是“伟大的”,但CE确实意味着“您可以摆脱的最少”。几乎就像是一个稍微有点浮夸的持久性引擎(以放克的灵活格式将内容保存到磁盘),而不是真正的数据库引擎一样。

一旦习惯了它的局限性以及解决这些局限的方法,它就会非常有用。对于特定任务。

2021-04-14