1 (edited by sibprogsistem 2018-08-26 18:14:20)

Topic: временная таблица

Дмитрий можно - ли через кнопку SQL запрос создать глобальную временную  таблицу

##временная таблица

к чему:
я хочу сделать подобие не большого сервера
временная таблица будет создаваться на стороне (сервера)
когда пользователь авторизуется в приложении то оно создает временную запись в этой таблице о пользователе, когда пользователь завершает сеанс то запись удаляется.

и еще Вопрос про MySQL
если сделать подключение через скрипт, программа сама создаст в базе таблицы или  их тоже нужно скриптом создать?

2 (edited by m.prokhachev 2018-08-27 06:55:14)

Re: временная таблица

Не пойму, а в чем проблема сделать раздельно программу-клиент и программу-сервер?
И не надо удалять запись в том смысле, в котором это понимаете вы, достаточно пометить сессию как закрытую. А запись останется для логов - мало ли, вам в какой-то момент по какой-то нужде придется просмотреть все подключения пользователей к серверу за какой-то период?..

Re: временная таблица

я знаю, что вертуальная таблица существует пока есть сеанс ..  вот только про записи в таблицу не знаю, удоляется ли запись сеанса при завершении сеанса или остается в базе пока последняя программа не завершит сеанс..
Мне это нужно на случай неожиданного завершения сеанса...

Re: временная таблица

А я и не про виртуальную таблицу...

Re: временная таблица

Если речь идет о временных таблицах в MySQL (CREATE TEMPORARY TABLE), они автоматически уничтожаются, после того, как сессия пользователя закончится или он отключится.


Вы можете получить список подключенных пользователей выполнив SQL запрос

SHOW processlist


sibprogsistem wrote:

и еще Вопрос про MySQL
если сделать подключение через скрипт, программа сама создаст в базе таблицы или  их тоже нужно скриптом создать?

В этом случае программа автоматически не создает таблицы, их можно создать вызвав функцию CreateDatabaseTablesMySQL


Т.е. будет так:

procedure Form1_OnShow (Sender: string; Action: string);
begin
     {$MySQL disable_connectdialog}
     Form1.MySQLConnection.Server := '127.0.0.1';
     Form1.MySQLConnection.Port := 3306;
     Form1.MySQLConnection.Username := 'root';
     Form1.MySQLConnection.Password := 'password';
     Form1.MySQLConnection.Database := 'databasename';

     try
         Form1.MySQLConnection.Connect;
     except
         ShowMessage('Can''t connect to database.');
         Form1.Close;
     end;

     if Form1.MySQLConnection.Connected then
     begin
         CreateDatabaseTablesMySQL;
         UpdateDatabase(''); // to fill ComboBoxes
         Form1.GridEmployees.dbUpdate; // if you have TableGrid on first form with option "Enable auto execution", you should call method dbUpdate manually
     end;


end;
Dmitry.

6 (edited by sibprogsistem 2018-08-31 18:47:54)

Re: временная таблица

[Script]
Enabled=1
[Options]
DBMS= [b]sqlite  или  mysql[/b]
server=G:\Рабочий стол\Script_fixed\sqlite.db  [b]если sqlite не в корневой папке[/b]
[mysql]
[b]параметры подключения к mysql[/b]
host=
port=3306
username=
database=
savepassword=0

за место скрипта подключения можно поменять  sqlite  или  mysql, думаю так будет проще.
но в этом случае мне все равно нужен скрипт создания таблиц?
в моем проекте пользователь может выбирать какую  БД он будет использовать

Re: временная таблица

Если подключение к MySQL происходит без помощи скрипта, то таблицы в БД будут созданы автоматически, если таковые отсутствуют.

Dmitry.

Re: временная таблица

"Ничто так не постоянно, как временное".  В одном из проектов мне нужно было создавать довольно сложные отчёты, а так как писать сохраненные процедуры для их реализации я не стал, то создал таблицу, в которую накидывал нужные мне данные для текущего пользователя/отчёта (добавил поле id_user для связи с пользователями системы). Данные по текущему пользователю из этой таблицы удалялись при подключении и отключении пользователя к БД одним простым запросом с клиентской части. Такое решение гораздо проще создания настоящих временных таблиц, так как позволяет при необходимости легко задействовать конструктор визуальных форм и генератор отчетов для отображения хранимых в них данных.

Визуальное программирование: блог и телеграм-канал.

Re: временная таблица

В общем дело так,  я хотел временную таблицу не для логов и т.п,  просто в базе должна была храниться запись о пользователе который уже к ней подключен, то есть, что бы с другого ПК под этим логином нельзя было войти, а при выходе запись о нем удалялась, такое можно сделать и в обычной таблице, но тогда если сеанс прирвется неожиданно запись в таблице останится, потому и надеялся на временную таблицу..

План №2
сравнивать с

SHOW processlist

, вот и все, этот вариант думаю на много проще...