powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как запретить изменения в таблице?
12 сообщений из 12, страница 1 из 1
Как запретить изменения в таблице?
    #39501422
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На недельку...


в общем, блокировка не подходит, т.к. срок довольно большой.


Как еще можно это реализовать?
...
Рейтинг: 0 / 0
Как запретить изменения в таблице?
    #39501425
ursido
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Константин Сергеевич Дерерк,

Отберите права на таблицу. Оставьте только SELECT.
...
Рейтинг: 0 / 0
Как запретить изменения в таблице?
    #39501518
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Сергеевич Дерерк,

триггер на таблицу
...
Рейтинг: 0 / 0
Как запретить изменения в таблице?
    #39501696
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел ЛузановКонстантин Сергеевич Дерерк,

триггер на таблицу


Создал триггер.

BEFORE INSERT OR UPDATE OR DELETE ON табле.


А что надо прописать в самом триггере чтобы изменения не вносились?

Код: sql
1.
2.
3.
4.
        INSERT INTO superlog(query)
        SELECT current_query();
        RETURN NEW;
    END;


Сейчас все логгируется, но изменения продолжают вносится, как их запретить вносить?
...
Рейтинг: 0 / 0
Как запретить изменения в таблице?
    #39501707
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а так?

Код: sql
1.
 RETURN NULL;
...
Рейтинг: 0 / 0
Как запретить изменения в таблице?
    #39501709
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще сразу вопрос,

current_query(); отлавливает запрос.



Но если запрос выглядит как вызов фунции с параметрами, то параметры не видны, только типа таого что-то:

Код: sql
1.
func_fun1($1);





Как отловить параметры функции?
...
Рейтинг: 0 / 0
Как запретить изменения в таблице?
    #39501710
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупина так?

Код: sql
1.
 RETURN NULL;



О. круто, сейчас испытаю!
...
Рейтинг: 0 / 0
Как запретить изменения в таблице?
    #39501723
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупина так?

Код: sql
1.
 RETURN NULL;




Ролг, спасибо, так действительно запрещает вставку данных в таблицу.

Единственное что не очень - это логгирование тоже не работает.

При инсерте просто пишет

Код: sql
1.
Запрос успешно выполнен: 0 строк изменено за 86 мс.



но табличку логгирования ничего не пишется.


Подскажите как сделать чтобы при попытке вставки тоже в таблицу писалось?
...
Рейтинг: 0 / 0
Как запретить изменения в таблице?
    #39501724
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
commit не свтавляется, так:

Код: sql
1.
2.
3.
4.
5.
6.
BEGIN
        INSERT INTO superlog(query)
        SELECT current_query();
commit;
        RETURN NULL;
END;





Выдает ошибку:

ОШИБКА: в PL/pgSQL нельзя начинать/заканчивать транзакции
SQL-состояние: 0A000
Подсказка: Используйте блок BEGIN с предложением EXCEPTION.
Контекст: функция PL/pgSQL строка 5, оператор SQL-оператор
...
Рейтинг: 0 / 0
Как запретить изменения в таблице?
    #39501740
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сейчас схема такая:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
...

    BEGIN
        INSERT INTO servers_log(query,client_ip,server_ip)
        SELECT current_query(),inet_client_addr(),inet_server_addr();
        RETURN OLD;
    END;

...


CREATE TRIGGER ХХХ BEFORE INSERT OR UPDATE OR DELETE ON ХХХ2
    FOR EACH ROW ...




При этом не дает делать изменения - это плюс.

Не логгируются операции - это минус.


Как сделать чтобы попытки изменения логгировались но при этом не давалось сделать изменения?

RETURN NULL; аналогичный результат.
...
Рейтинг: 0 / 0
Как запретить изменения в таблице?
    #39501744
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Сергеевич ДереркСейчас схема такая:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
...

    BEGIN
        INSERT INTO servers_log(query,client_ip,server_ip)
        SELECT current_query(),inet_client_addr(),inet_server_addr();
        RETURN OLD;
    END;

...


CREATE TRIGGER ХХХ BEFORE INSERT OR UPDATE OR DELETE ON ХХХ2
    FOR EACH ROW ...




При этом не дает делать изменения - это плюс.

Не логгируются операции - это минус.


Как сделать чтобы попытки изменения логгировались но при этом не давалось сделать изменения?

RETURN NULL; аналогичный результат.



имхую, что это одна транзакция, она завершается или откатывается.

Можно присвоить значения NEW = OLD и вернуть NEW
...
Рейтинг: 0 / 0
Как запретить изменения в таблице?
    #39501751
Константин Сергеевич Дерерк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг ХупинКонстантин Сергеевич ДереркСейчас схема такая:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
...

    BEGIN
        INSERT INTO servers_log(query,client_ip,server_ip)
        SELECT current_query(),inet_client_addr(),inet_server_addr();
        RETURN OLD;
    END;

...


CREATE TRIGGER ХХХ BEFORE INSERT OR UPDATE OR DELETE ON ХХХ2
    FOR EACH ROW ...




При этом не дает делать изменения - это плюс.

Не логгируются операции - это минус.


Как сделать чтобы попытки изменения логгировались но при этом не давалось сделать изменения?

RETURN NULL; аналогичный результат.



имхую, что это одна транзакция, она завершается или откатывается.

Можно присвоить значения NEW = OLD и вернуть NEW



Проверил так:
Код: sql
1.
2.
3.
4.
...
        NEW=OLD;
        RETURN NEW;
...



результат такой же при UPDATE. (при инсерт ошибка, но сейчас не об этом.)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как запретить изменения в таблице?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]