-
Привет мастерам!
пару лет назад сделал клиент программу для подсистемы по обслуживанию пластиковых карт. Прога создавал файл для открытия карт и для пополнения карт. Теперь нужно сделать чтобы прога работала с базой одновременно с нескольким соединением и те данные созданные при разных соединениях были бы уникальными, имели бы уникальны номер. например я ввел данные по одному клиенту а другой сотрудник тоже по этому клиенту вводил данные а в базе нужно сделать так чтобы было различие. Я хотел сделать так чтобы при соединение создать GUID код и сохранит данные с этим кодом. а GUID код в базе в отдельной таблице указать кому принадлежит этот код и когда был создан и для когого клиента. Хотелось бы узнать ваши мнения по этому поводу. Если не ясно написал то могу уточнить
-
триггером вести историю изменений
-
Уточните, т.к. непонятно зачем отдельная таблица, зачем при соединении создавать GUID и т.д.
-
так а БД одна?
-
> Виталий Панасенко (26.07.11 15:52) [3]
> так а БД одна?
Да
-
да, кстати, БД одна?
если одна - то триггером, там из соединения много служебной инф-ции можно почерпнуть, плюс время изменения. Просто еще одна таблица версий для записей.
-
> b z (26.07.11 15:48) [2]
> Уточните, т.к. непонятно зачем отдельная таблица, зачем
> при соединении создавать GUID и т.д.
Это чтобы отличить мои данные от чужих если я делаю корректировку или сформирую файл из этих данных. Работать только со своими данными и только теми которых создал в этой сессии работе с прогой
-
> да, кстати, БД одна?если одна - то триггером, там из соединения
> много служебной инф-ции можно почерпнуть, плюс время изменения.
> Просто еще одна таблица версий для записей.
Нужно тогда почитать, раньше я не работал с триггерами
-
ну, я так думаю, уникальным будет пара ИД(генерируемая триггером) и картсчет. хотя, все зависит от расторопности менегера.. тогда еще и дата/время записи.. хотя пока смысл до конца не понял - как можно данные по одной карте разносить на разных рабочих местах
-
> Xmen (26.07.11 15:56) [6]
> Это чтобы отличить мои данные от чужих если я делаю корректировку
> или сформирую файл из этих данных. Работать только со своими
> данными и только теми которых создал в этой сессии работе
> с прогой
В ЖарПтице все для этого есть
1 мои данные - разные имена пользователей
2 ------------------------
System context variables
------------------------
CURRENT_CONNECTION / CURRENT_TRANSACTION (FB 1.5)
-------------------------------------------------
Function:
Returns system identifier of the active connection/transaction,
i.e. a connection/transaction, in which context the given SQL
statement is executed.
Author:
Dmitry Yemanov <yemanov@yandex.ru>
Syntax rules:
CURRENT_CONNECTION / CURRENT_TRANSACTION
Type:
INTEGER
Scope:
DSQL, PSQL
Example(s):
1. SELECT CURRENT_CONNECTION FROM RDB$DATABASE;
2. NEW.CONN_ID = CURRENT_TRANSACTION;
3. EXECUTE PROCEDURE P_LOGIN(CURRENT_CONNECTION);
Note(s):
These values are stored on the database header page,
so they will be reset after a database restore.
-
или по п.1 - IP рабочей станции
-
А может и есть штатные средства аудита, не силен.
мы так сделали
(таблица_аудита)
id записи исходной таблицы, кто, на что, под каким именем, и т.д. изменил.
join с исходной по id, order by по времени. Все наглядно, +можно вернуться на любой момент назад. (почти, там тоже логика есть на самом деле)
можно попробовать еще where (login был мой), тогда каждый и будет видеть свои
вроде это преследуется?
НО
это неправильно с т.з. организации процесса и вообще, БД
-
> ну, я так думаю, уникальным будет пара ИД(генерируемая триггером)
> и картсчет. хотя, все зависит от расторопности менегера.
> . тогда еще и дата/время записи.. хотя пока смысл до конца
> не понял - как можно данные по одной карте разносить на
> разных рабочих местах
Не по одой карте а по одному корпоративному клиенту. Например я ввожу данные о сотрудников корт.клета первых 50 сотрудников, а другой чел остальных 50 сотрудников. Получается данные одного корп.кл. 100 сотрудников из них 50 которых я могу редактировать и записать в файл.
-
> Xmen (26.07.11 16:04) [12]
разное имя пользователя. ну и остальное (ИД клиента, что там еще есть)
-
есть еще одна контекстная переменная CURRENT_USER...и работай! только со своими данными