Запускать всякий раз, когда значение в представлении изменилось - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть SQL представление, которое разрешает некоторые зависимости внешнего ключа. Представление выглядит следующим образом:

id | title | plantName | customerName | lastUpdated

Где plantName и customerName - это 2 разрешенных значения внешнего ключа.

Всего 3 таблицы:

Table 1
id | name | surname | idTable2 | idTable3 | lastUpdated

Table 2
id | plantName

Table 3
id | firstName | lastName

Я хочу заархивировать триггер, который обновляет столбец lastUpdated в представлении каждый раз, когда в строке отображается другое значение. Проблема здесь в том, что lastUpdated внутри представления также должно обновляться, когда внешний ключ меняет свое значение.

Пример представления Вывод:

1 | hotel | mock | meier | 2020-02-26 10:03:03.817
2 | hotel | raddison | mueller | 2020-02-26 10:04:03.000

Допустим, я обновлю Table 2 и обновите "raddison" до "Mercure Hotel". После этого представление будет выглядеть так:

1 | hotel | mock | meier | 2020-02-26 10:03:03.817
2 | hotel | mercure hotel | mueller | 2020-02-26 10:04:03.000

Теперь я хочу, чтобы столбец lastUpdated в представлении строки 2 представлял дату и время, когда внешний ключ изменился. Желаемый результат:

1 | hotel | mock | meier | 2020-02-26 10:03:03.817
2 | hotel | mercure hotel | mueller | 2020-02-26 13:44:03.000

Есть ли способ архивировать это?

Заранее спасибо

1 Ответ

1 голос
/ 27 февраля 2020

В комментариях вы подтвердили, что хотите следующее:

вы хотите обновить столбец «last_updated» в таблице 1 всякий раз, когда значение изменяется в таблицах 1, 2 или 3, и включать это значение "last_updated" в вашем представлении

Этот вопрос показывает, как создать триггер для обновления столбца при изменении записи.

Вам потребуется создать этот триггер в таблицах 1, 2 и 3, а оператор обновления должен обновить столбец lastUpdated таблицы 1.

В качестве альтернативы, вы можете создать lastUpdated в все 3 таблицы и выберите самое высокое значение в вашем представлении.

...