Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Создать GTT из под не SYSDBA  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 1010
ФБ3. Хотел поработать с GTT. В Эксперте всё замечательно. При создании с клиента ошибка:
unsuccessful metadata update
CREATE TABLE MYGTT failed
There is no privilege for this operation

CREATE GLOBAL TEMPORARY TABLE MYGTT ( NAME VARCHAR(20), DATE1 DATE, DATE2 DATE ) ON COMMIT PRESERVE ROWS

Где каких привилегий не хватает?
29 июл 20, 15:03    [22175205]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
Dimitry Sibiryakov
Member

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

KreatorXXI
Где каких привилегий не хватает?

В базе. На создание таблиц.

Posted via ActualForum NNTP Server 1.5

29 июл 20, 15:14    [22175215]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29015
KreatorXXI,

http://www.ibase.ru/files/firebird/Firebird_3_0_Language_Reference_RUS.pdf
со страницы 359, Привилегии DDL.
29 июл 20, 15:32    [22175234]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 1010
Спасибо. Разобрался. Не ожидал.
Чтобы не плодить темы. Хочу дропнуть эту временную таблицу. Выскакивает ошибка "In Use". Вообще мне эта временная таблица нужна для временного расчёта и всё. По времени это несколько секунд. В этом случае GTT уровня соединения может не нужна? Лучше транзакционного уровня?
29 июл 20, 16:54    [22175295]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
hvlad
Member

Откуда:
Сообщений: 10993
KreatorXXI,

если ты хочешь использовать GTT в стиле MSSQL (поматросил и дропнул) - не советую, они не такие.

Если говорит In Use - значит так и есть. Закрывай запросы\тр-ции вовремя.
29 июл 20, 16:59    [22175298]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
Dimitry Sibiryakov
Member

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

KreatorXXI
В этом случае GTT уровня соединения может не нужна?

В этом случае GTT вообще не нужна. Но если ты не можешь без неё, то зачем её дропать?

Posted via ActualForum NNTP Server 1.5

29 июл 20, 17:02    [22175300]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29015
KreatorXXI,

создавать и дропать - это когда-то было решение, когда настоящих временных таблиц не было.
С GTT в этом никакого смысла нет, т.к. данные в ней а) не хранятся в базе, б) не хранятся вообще за пределами коннекта.

Так что, пусть админ БД создает GTT, а дальше пусть ею пользуются все, кому надо "сделать расчет".
29 июл 20, 19:11    [22175382]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 1010
kdv,

объясните ещё раз тупому. Я (либо админ) могу один раз создать GTT. Каждый пользователь может писать туда данные. Эти данные удалять, если надо. Для каждого пользователя (коннекта) экземпляр данных будет свой (объединения данных можно не бояться). Так?
30 июл 20, 09:48    [22175535]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29015
KreatorXXI,

опять же
http://www.ibase.ru/files/firebird/Firebird_3_0_Language_Reference_RUS.pdf
страница 126, Глобальные временные таблицы (GTT)

KreatorXXI
Эти данные удалять, если надо

сервер не хранит эти данные в БД, данные удаляются сами по завершении транзакции или коннекта.
между пользователями эти данные не видны, и не видны даже если один пользователь стартанул 2 транзакции или 2 коннекта.
30 июл 20, 11:21    [22175580]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10418
Видимость между двумя транзакциями в одном подключении зависит от "on commit DELETE|PRESERVE rows" для GTT.
30 июл 20, 11:40    [22175591]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 1010
kdv,

всё, разобрался, такое поведение GTT меня вполне устраивает. Ваша ссылка не открывается. В моём LR очень скудно про GTT. Не в претензии, видимо, слишком старый файл.
И, да, я видимо хотел поведения как в MS, хотя не знаю как там :). Чисто интуитивно.
30 июл 20, 13:05    [22175650]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29015
KreatorXXI
Ваша ссылка не открывается.

что значит "не открывается"? Почему она у меня открывается?
У вас нет акробат-ридера?
30 июл 20, 13:59    [22175696]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 1010
kdv,

была ошибка "504 Gateway Timeout". Сейчас всё нормально. Проблема может на моей стороне. Всё равно из раздела по GTT не очень понятен принцип работы. Я понял только после экспериментов и комментариев здесь. Наверно, туповат :).
30 июл 20, 16:25    [22175789]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29015
KreatorXXI,

в доке, описание, конечно, куцое. Но вполне достаточное. А побольше вроде есть тут, на форуме.
30 июл 20, 20:15    [22175878]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 1010
kdv,

примерчик использования бы. А есть фактически только синтаксис создания. Может это и неплохо. Разработчик свои мозги напряг. Кстати, поставил тему в опытную эксплуатацию, проблем пока нет.
31 июл 20, 09:59    [22175962]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
m7m
Member

Откуда: Украина, Мариуполь
Сообщений: 1400
KreatorXXI
kdv,

примерчик использования бы. А есть фактически только синтаксис создания. Может это и неплохо. Разработчик свои мозги напряг. Кстати, поставил тему в опытную эксплуатацию, проблем пока нет.

Да какой там пример-то нужен
Данные "видны" либо в пределах транзакции, либо в пределах коннекта
а в остальном все как и с обычной таблицей
31 июл 20, 11:47    [22176018]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 512
m7m,

Плюс еще в эту таблицу можно писать из readonly-транзакции, чем я активно пользуюсь для отчетов
31 июл 20, 12:51    [22176105]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 1010
m7m

Да какой там пример-то нужен

Я вот почему-то думал, что GTT работает так. Пользователь создал таблицу, поработал с ней и дропнул. Всё равно она в оперативке, данные в ней никому, кроме текущего пользователя не доступны, зачем её создавать заранее, давать пользователям права на неё? Мне кажется, какая-то логика в моих рассуждениях есть. Оказалось, реализация другая. И вот этой реализации из описания в LR не понять. Опять же слово "временная". "Временная" - это временно есть, а потом нету. А тут получается - таблица постоянная, данные в ней временные.
31 июл 20, 13:17    [22176129]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
Dimitry Sibiryakov
Member

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

KreatorXXI
Я вот почему-то думал, что GTT работает так. Пользователь создал таблицу, поработал с ней
и дропнул.

Потому что слово "глобальная" в её названии прошло мимо сознания?..

Posted via ActualForum NNTP Server 1.5

31 июл 20, 13:22    [22176133]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 1010
Dimitry Sibiryakov,

если слово "глобальная" должно менять значение "временная" на "постоянная", то согласен, моё сознание было не готово к этому.
31 июл 20, 13:51    [22176153]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
Basil A. Sidorov
Member

Откуда:
Сообщений: 10418
"Глобальная" == "Общая".
"Временная" == "Для временного хранения данных".
Причём здесь "создал, поработал, дропнул"?
31 июл 20, 14:53    [22176226]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 29015
Basil A. Sidorov,

да вот я тоже не понял. обычная таблица - создал, поработал, дропнул, и GTT тоже - создал, поработал, дропнул.
Казалось бы, в чем разница? Нет, начинаются фантазии, что gtt, это "в памяти".
При том, что в документации одним абзацем исчерпывающе описано
"Глобальные временные таблицы (в дальнейшем сокращённо GTT) так же, как и обычные таблицы, являются постоянными метаданными, но данные в них ограничены по времени существования транзакцией (значение по умолчанию) или соединением с БД. Каждая транзакция или соединение имеет свой собственный экземпляр GTT с данными, изолированный от всех остальных. Экземпляры создаются только при условии обращения к GTT, и данные в ней удаляются при подтверждении транзакции или отключении от БД. "

вот я не представляю, что еще тут объяснять, и какие должны быть примеры (кроме примеров ddl).
31 июл 20, 15:10    [22176248]     Ответить | Цитировать Сообщить модератору
 Re: Создать GTT из под не SYSDBA  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 1010
kdv,

всё, согласен, я неправильно понял, вернее вообще не понял. Посыпаю голову пеплом.
31 июл 20, 16:18    [22176299]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить