在PHP中从MySQL中提取主键

时间:2010-04-09 06:08:09

标签: php mysql database joomla triggers

我已经创建了一个PHP脚本,我不能提取主键,我已经给出了以下流程,请帮助我如何修改以获得主键

我正在使用MySQL DB,为Joomla工作,我的要求是跟踪任何表上的插入/更新/删除等活动,并使用触发器将其存储在另一个审计表中,即我正在进行审计。 DB的表结构:很少有表没有任何PK或自动增量键

我的脚本流程是:

  1. 我从DB中取出所有表格。
  2. 我检查表格是否有任何触发器。
  3. 如果是,那么它会移动以检查下一张桌子,依此类推。
  4. 如果它没有找到任何触发器,那么它会为表创建触发器,这样就可以了,

    • 首先检查表是否有任何主键(用于在每次更改时插入跟踪审核表)
    • 如果它有主键,那么它会在创建触发器时进一步使用它。
    • 如果它没有找到任何PK,那么它会继续创建触发器而不在审计表中插入任何id
  5. 现在,我的问题是我每次都需要PK,以便我可以记录执行插入/更新/删除的任何特定表的id,以便我可以使用此审计跟踪表进行复制生产DB .. 现在正如我前面提到的那样,我在某些表中没有PK /自动递增,那么我该怎么做才能得到改变的特定id?

    请指导我...... GEEKS !!!

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题是正确的,那么对于没有主键且没有其他类型的唯一标识符的表行,您需要一个唯一标识符。就我所见,这并不容易。其他数据库具有唯一的行ID,但mySQL没有。您可以使用每列的值来尝试识别行,但这远非重复安全 - 可能有两行或更多行包含完全相同的值。所以我会说,如果没有唯一的标识符,这是根本无法完成的事情。

这个SO问题中的一些想法:

MySQL: is there something like an internal record identifier for every record in a MySQL table?