Обновление значений родительских свойств в SQL - PullRequest
0 голосов
/ 18 августа 2010

У меня есть база данных SQL Server 2008 с 2 таблицами. Эти таблицы определены так:

Device
------
ID
Name
Description
TotalApplications

Application
-----------
ID
Name
DeviceID

Недавно я добавил столбец "TotalApplications", чтобы ускорить запрос, который занимает слишком много времени. Количество приложений, связанных с устройством, меняется не очень часто. Когда это произойдет, мне нужно написать триггер, чтобы справиться с этим. Но сейчас мне просто нужно заполнить свою базу данных.

В настоящее время TotalApplications, связанных с каждым устройством, равно 0. Очевидно, мне нужно обновить это значение для всех записей моего устройства. Однако я не могу понять, как это сделать. Может кто-нибудь объяснить, как я могу обновить значение TotalApplications для моих записей устройства?

Большое спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 18 августа 2010

Использование:

UPDATE DEVICE
   SET totalapplications = (SELECT COUNT(*)
                              FROM APPLICATION a
                             WHERE a.deviceid = DEVICE.id)
 WHERE totalapplications = 0
1 голос
/ 18 августа 2010

OMG Ponies ответ наверняка сработает, но если бы это был мой дБ, я бы не стал добавлять столбец и использовать триггерВместо этого используйте индексирование, или я не могу получить с индексами, я бы использовал индексированное представление.Дайте мне знать, если вы хотите, чтобы я опубликовал это.

...