Конференция "Базы" » Уникальность соединения [D7, FiriBird]
 
  • Xmen (26.07.11 15:38) [0]
    Привет мастерам!
    пару лет назад сделал клиент программу для подсистемы по обслуживанию пластиковых карт. Прога создавал файл для открытия карт и для пополнения карт. Теперь нужно сделать чтобы прога работала с базой одновременно с нескольким соединением  и те данные созданные при разных соединениях были бы уникальными, имели бы уникальны номер. например я ввел данные по одному клиенту а другой сотрудник тоже по этому клиенту вводил данные а в базе нужно сделать так чтобы было различие. Я хотел сделать так чтобы при соединение создать GUID код и сохранит данные с этим кодом. а GUID код в базе в отдельной таблице указать кому принадлежит этот код и когда был создан и для когого клиента. Хотелось бы узнать ваши мнения по этому поводу. Если не ясно написал то могу уточнить
  • SQLEXPRESS (26.07.11 15:47) [1]
    триггером вести историю изменений
  • b z (26.07.11 15:48) [2]
    Уточните, т.к. непонятно зачем отдельная таблица, зачем при соединении создавать GUID и т.д.
  • Виталий Панасенко (26.07.11 15:52) [3]
    так а БД одна?
  • Xmen (26.07.11 15:53) [4]

    > Виталий Панасенко   (26.07.11 15:52) [3]
    > так а БД одна?

    Да
  • SQLEXPRESS (26.07.11 15:55) [5]
    да, кстати, БД одна?
    если одна - то триггером, там из соединения много служебной инф-ции можно почерпнуть, плюс время изменения. Просто еще одна таблица версий для записей.
  • Xmen (26.07.11 15:56) [6]

    > b z   (26.07.11 15:48) [2]
    > Уточните, т.к. непонятно зачем отдельная таблица, зачем
    > при соединении создавать GUID и т.д.

    Это чтобы отличить мои данные от чужих если я делаю корректировку или сформирую файл из этих данных. Работать только со своими данными и только теми которых создал в этой сессии работе с прогой
  • Xmen (26.07.11 15:57) [7]

    > да, кстати, БД одна?если одна - то триггером, там из соединения
    > много служебной инф-ции можно почерпнуть, плюс время изменения.
    >  Просто еще одна таблица версий для записей.

    Нужно тогда почитать, раньше я не работал с триггерами
  • Виталий Панасенко (26.07.11 15:58) [8]
    ну, я так думаю, уникальным будет пара ИД(генерируемая триггером) и картсчет. хотя, все зависит от расторопности менегера.. тогда еще и дата/время записи.. хотя пока смысл до конца не понял - как можно данные по одной карте разносить на разных рабочих местах
  • Виталий Панасенко (26.07.11 16:02) [9]

    > 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.
  • Виталий Панасенко (26.07.11 16:03) [10]
    или по п.1 - IP рабочей станции
  • SQLEXPRESS (26.07.11 16:04) [11]
    А может и есть штатные средства аудита, не силен.

    мы так сделали
    (таблица_аудита)
    id записи исходной таблицы, кто, на что, под каким именем, и т.д. изменил.

    join с исходной по id, order by по времени. Все наглядно, +можно вернуться на любой момент назад. (почти, там тоже логика есть на самом деле)

    можно попробовать еще where (login был мой), тогда каждый и будет видеть свои
    вроде это преследуется?
    НО
    это неправильно с т.з. организации процесса и вообще, БД
  • Xmen (26.07.11 16:04) [12]

    > ну, я так думаю, уникальным будет пара ИД(генерируемая триггером)
    > и картсчет. хотя, все зависит от расторопности менегера.
    > . тогда еще и дата/время записи.. хотя пока смысл до конца
    > не понял - как можно данные по одной карте разносить на
    > разных рабочих местах

    Не по одой карте а по одному корпоративному клиенту. Например я ввожу данные о сотрудников корт.клета первых 50 сотрудников, а другой чел остальных 50 сотрудников. Получается данные одного корп.кл. 100 сотрудников из них 50 которых я могу редактировать и записать в файл.
  • Виталий Панасенко (26.07.11 16:09) [13]

    > Xmen   (26.07.11 16:04) [12]


    разное имя пользователя. ну и остальное (ИД клиента, что там еще есть)
  • Виталий Панасенко (26.07.11 16:12) [14]
    есть еще одна контекстная переменная CURRENT_USER...и работай! только со своими данными
 
Конференция "Базы" » Уникальность соединения [D7, FiriBird]
Есть новые Нет новых   [134431   +10][b:0][p:0]