Если вы проверите Books Online или другие ссылки, вы обнаружите, что вы не можете сделать это в SQL Server CE.
- без пункта
- Нет коррелированных подзапросов
По сути, единственные данные, на которые может ссылаться инструкция UPDATE, - это данные в обновляемой строке.
Есть только два метода, которые я нашел, чтобы обойти это:
1. Клиентское приложение выполняет выбор, а затем запускает одно или несколько прямых обновлений
2. ВСТАВЬТЕ новые значения, затем УДАЛИТЕ старые значения
Первое, в значительной степени, как CE (насколько я знаю) предназначен для работы. Например, T-SQL не существует, поэтому в приложение должны быть встроены блоки IF и другая процедурная логика, а не SQL.
Вторая имитация того, как выглядит ОБНОВЛЕНИЕ в триггере; Удаление и вставка. И при условии, что вы реструктурируете свои данные, чтобы сделать это возможным, это весьма эффективно.
Ни один из них не является «великим», но тогда CE действительно должен быть «наименьшим, с чем вы можете сойти с рук». Похоже, что это скорее слегка броский движок персистенции (сохранение материала на диск в фанк-гибком формате), а не реальный движок базы данных.
Однако, как только вы привыкнете к его ограничениям и способам их обойти, это может быть довольно полезно. Для конкретных задач.