Извлечь первичный ключ из MySQL в PHP - PullRequest
1 голос
/ 09 апреля 2010

Я создал PHP-скрипт и мне не хватает возможности извлечь первичный ключ. Ниже приведен процесс, помогите мне узнать, как я могу изменить, чтобы получить первичный ключ

Я использую MySQL DB, работаю для Joomla. Мое требование - отслеживать такие действия, как вставка / обновление / удаление любой таблицы, и сохранять их в другой таблице аудита с помощью триггеров, т.е. я выполняю аудит. Структура таблицы БД: немногие таблицы не имеют ни PK, ни ключа автоинкремента

Поток моего сценария:

  1. Я извлекаю всю таблицу из БД.
  2. Я проверяю, есть ли у таблицы триггер или нет.
  3. Если да, то он перемещается, чтобы проверить следующую таблицу и т. Д.
  4. Если он не находит триггера, он создает триггеры для таблицы, такие, что

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

Теперь здесь, моя проблема в том, что мне нужен PK каждый раз, чтобы я мог записать идентификатор любой конкретной таблицы, в которой выполняется вставка / обновление / удаление, чтобы в дальнейшем я мог использовать эту таблицу отслеживания аудита для репликации в производственная БД .. Теперь, как я упоминал ранее, что я не доступен с PK / автоинкрементным в некоторой таблице, то что мне делать, чтобы получить конкретный идентификатор, в котором производится изменение?

пожалуйста, ведите меня ... ГИКИ !!!

1 Ответ

1 голос
/ 09 апреля 2010

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

Некоторые идеи в этом вопросе:

MySQL: есть ли что-то вроде внутреннего идентификатора записи для каждой записи в таблице MySQL?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...