Предположим, я использую следующий код Oracle в хранимой процедуре:
CREATE GLOBAL TEMPORARY TABLE temp_table (
field1 NUMBER,
field2 NUMBER
)
ON COMMIT DELETE ROWS
Эта конкретная хранимая процедура может вызываться одновременно разными пользователями в любой момент. Насколько я понимаю, данные, видимые пользователю во временной таблице, будут для него частными, и эти строки будут удалены в COMMIT.
Однако, как это работает в отношении этого:
Безопасно ли вызывать оператор CREATE выше каждый раз вызывается хранимая процедура? Может ли это привести к ошибке, поскольку там уже «существует» временная таблица (возможно), созданная другим пользователем (/ сеанс)? Или все будет в порядке, поскольку сервер все равно обрабатывает их конфиденциально?
Что именно происходит с ON COMMIT DELETE ROWS? Я предполагаю, что при этом удаляются только строки, относящиеся к конкретному сеансу пользователя, а данные других сеансов остаются без изменений, верно?
Любая помощь будет оценена. :)