Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 RETURNING из VEW... что не так?  [new]
Геннадий2128506
Member

Откуда:
Сообщений: 4
есть таблица
TABLE LOG$APP_CONN (
LOG_ID BIGINT GENERATED BY DEFAULT AS IDENTITY,
APP_ID SMALLINT,
USER_NAME FB_RELATION_NAME /* FB_RELATION_NAME = VARCHAR(31) */,
LOG_DATETIME TIMESTAMP,
CLIENT_IP VARCHAR(34)
);

из соображений безопасности работа с этой таблицей ведется через простмотр

VIEW LOG$VWA$APP_CONN(
LOG_ID,
APP_ID,
USER_NAME,
LOG_DATETIME,
CLIENT_IP)
AS
SELECT LOG_ID, APP_ID, USER_NAME, LOG_DATETIME, CLIENT_IP
FROM LOG$APP_CONN
WHERE USER_NAME = CURRENT_USER

у которого есть триггер на вставку...


TRIGGER LOG$VWA$APP_CONN_BI0 FOR LOG$VWA$APP_CONN
ACTIVE BEFORE INSERT OR UPDATE OR DELETE POSITION 0
AS
DECLARE VARIABLE LOG_ID INTEGER;
BEGIN
IF (INSERTING) THEN -- только Insert
BEGIN
INSERT INTO LOG$APP_CONN (APP_ID)
VALUES (:NEW.APP_ID);
END ELSE
IF (UPDATING) THEN
BEGIN
END ELSE
IF (DELETING) THEN
BEGIN
END
END

где нужно вставлять только одно значение APP_ID, ибо остальные значения вставляются триггером самой таблицы

в ходе экспериментов
при вставке записи в таблицу
INSERT INTO LOG$APP_CONN (APP_ID) VALUES (:APP_ID) RETURNING LOG_ID

я спокойно получаю этот LOG_ID

а при вставке в просмотр
INSERT INTO LOG$VWA$APP_CONN (APP_ID)
VALUES (:APP_ID) RETURNING LOG_ID

возвращается всегда только NULL....

Как мне при вставке записи в просмотр получить это злосчастное LOG_ID??????????
9 сен 19, 19:11    [21967217]     Ответить | Цитировать Сообщить модератору
 Re: RETURNING из VEW... что не так?  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48163

Геннадий2128506
Как мне при вставке записи в просмотр получить это злосчастное LOG_ID??????????

В триггере присвой значение new.log_id.

Posted via ActualForum NNTP Server 1.5

9 сен 19, 19:19    [21967220]     Ответить | Цитировать Сообщить модератору
 Re: RETURNING из VEW... что не так?  [new]
Геннадий2128506
Member

Откуда:
Сообщений: 4
Дима, спасибо!
Пытался это сделать как параметр :NEW.LOG_ID, так даже не компилилось
А так NEW.LOG_ID ОК! заработало!
9 сен 19, 19:27    [21967226]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить