Мне нужно получить пользовательский столб в таблицу и не удалось выяснить, как инструкция GENERATED FOR EACH ROW ON UPDATE AS работает с переменной SESSION_USER в DB2 10.5 (LUW).DB2: как получить сгенерированный всегда как оператор для работы с пользователем сеанса
Успели получить реализацию рабочего с использованием функции, которая имеет поддельный переменную для принуждая оценки в отчетности обновления:
CREATE OR REPLACE FUNCTION XXX.CURRENT_USER(tmp varchar(128))
SPECIFIC xxx.XXX_CURRENT_USER
RETURNS VARCHAR(128)
CONTAINS SQL DETERMINISTIC NO EXTERNAL ACTION
BEGIN
RETURN session_user ;
END
GO
CREATE TABLE xxx (
i INTEGER,
t VARCHAR(128) GENERATED ALWAYS AS (XXX.CURRENT_USER(i))
)
Однако, было бы неплохо иметь меньше «Hacky» реализацию основной вещи, как это ,
Для штампов времени существует, что инструкция «ДЛЯ КАЖДОГО РУКА НА ОБНОВЛЕНИИ КАК СКОРОСТЬ ИЗМЕНЕНИЯ ВРЕМЕНИ», но не эквивалентна для других переменных регистра, кажется.
Справка очень ценится
Спасибо за отзыв. К сожалению, это не работает с операциями обновления. Я бы хотел автоматически поймать, кто изменил строку без использования триггеров. – JMX
@JMX. , , Я не думаю, что ваш код тоже это сделает. Я думаю, вам нужно использовать триггер. –
На самом деле, если функция зависит от значений строк, например, столбца «i». – JMX