powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Быстрое удаление
19 сообщений из 19, страница 1 из 1
Быстрое удаление
    #40117236
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую знатоков и разработчиков!

WI-V3.0.8.33535 Firebird 3.0

Понимаю, что совмещение DDL и DML в одной транзакции - зло. Но вот хочется по-быстрому почистить таблицу. Можно в одной транзакции деактивировать триггера, сделать delete from table и активировать обратно. Смысл в том, что если очистка где-то обломится, то триггера бы остались на месте и глюков потом не было. Или рискованная схема?
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117238
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory,

так они у тебя только в этой транзакции этого коннекта и будут деактивированы. А в остальных коннектах - нет.
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117242
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv
ggreggory,

так они у тебя только в этой транзакции этого коннекта и будут деактивированы. А в остальных коннектах - нет.


Это логично. Даже не в остальных коннектах, а в других транзакциях этого коннекта. Но речь о задаче быстрой чистке базы данных (полностью или частично). Т.е. некоей служебной процедуре. Другие по логике не должны в таблицу что-то заносить пока мы её чистим.
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117254
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory,
Задача надёжно решается, имхо, только через TRUNCATE.
Но это, опять же, только в четверке.
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117257
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad F

Но это, опять же, только в четверке.


Да нет, возможно в пятерке .
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117268
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во всех остальных версиях - RECREATE TABLE.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117285
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory, это не рискованная схема, а штаны, надетые через голову.
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117292
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gallemar
ggreggory, это не рискованная схема, а штаны, надетые через голову.


Хорошо, а альтернатива?
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117295
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Во всех остальных версиях - RECREATE TABLE.


А если есть зависимости?
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117296
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory
Vlad F

Но это, опять же, только в четверке.


Да нет, возможно в пятерке .

Значит, обманули. Ничего необычного.))
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117297
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory
Gallemar
ggreggory, это не рискованная схема, а штаны, надетые через голову.


Хорошо, а альтернатива?

А хз, я же не знаю сколько строк в таблице, что за триггер на ней, структура какая, как она используется.
В похожей ситуации выгонял всех из базы, убирал алиас, деактивировал триггер, делал реконнект и удалял что надо с условием по времени.
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117300
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory
Gallemar
ggreggory, это не рискованная схема, а штаны, надетые через голову.


Хорошо, а альтернатива?
Контекстная переменная
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117302
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad
ggreggory


Хорошо, а альтернатива?
Контекстная переменная


Ясно... ну ладно... Это и раньше юзали, на полуторке, только там UDF были, а тут встроенный rdb$get_context. Думал как-нибудь поинтереснее сделать....
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117303
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggoryА если есть зависимости?

Значит чистить эту таблицу не нужно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117306
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggoryЭто и раньше юзали, на полуторке, только там UDF были
ну конечно, на полуторке, и на суперсервере, потокобезопасные udf с указателями на глобальный кусок памяти.
Генераторы использовали, а не udf.
А контекстная переменная - в данном случае самое то. "Интереснее" - это уже будет изврат :-)
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117308
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory
Gallemar
ggreggory, это не рискованная схема, а штаны, надетые через голову.


Хорошо, а альтернатива?


Например, по старинке, проальтерить delete-триггера таблицы так, чтобы тело было обёрнуто в if current_user<>некий спецюзер, имеющий необходимые права на эту таблицу и что там эти триггера задевают (права проверяются всегда). И грохнуть там всё им. Собственно, чтоб не возиться с правами, нынче можно и контекстную переменную, а не юзера использовать.
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117311
Фотография Gallemar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
ggreggory
пропущено...


Хорошо, а альтернатива?
Контекстная переменная

А это как?
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117317
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ggreggory
Gallemar
ggreggory, это не рискованная схема, а штаны, надетые через голову.


Хорошо, а альтернатива?

Массово не удалять данные физически.
Вместо этого, ограничить доступ к логически удаленным данным. Например, организовав доступ к "проблемной" табличке через view. А реальную "чистку" делать не спеша, когда время будет.
...
Рейтинг: 0 / 0
Быстрое удаление
    #40117318
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gallemar
А это как?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE OR ALTER TRIGGER TABLE1_BD FOR TABLE1
ACTIVE BEFORE DELETE POSITION 0
as
begin
  if (rdb$get_context('USER_SESSION', 'Переменная') = '1') then exit;

  ...
end
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Быстрое удаление
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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