2010-04-09 79 views
1

我创建了一个PHP脚本,我缺乏提取的主键,我已经给下面的流程,请帮我如何修改让主键提取主键从MySQL在PHP

我使用MySQL数据库,为Joomla工作,我的要求是跟踪任何表上的插入/更新/删除活动,并将其存储在另一个使用触发器的审计表中,即我在做审计。 DB的表结构:几张桌子,不要有任何的PK,也没有自动递增键

我的脚本的流程是:

  1. 我从数据库提取出所有表。
  2. 我检查表是否有触发器。
  3. 如果是,则移动到检查下一个表格等。
  4. 如果一点儿也不发现任何触发然后为表创建触发器,使得

    • 它首先检查表中有任何主键或不(在跟踪审计表用于插入每做一次更改)
    • 如果它有主键,那么它会在创建触发器时进一步使用它。
    • 如果它没有找到任何PK那么它在创造触发进一步的情况下,不审计表中插入任何ID

现在在这里,我的问题是我需要的PK每次这样我可以记录在其中执行插入/更新/删除的任何特定表的id,以便我可以进一步使用此审计轨道表在生产数据库中进行复制。现在,正如我之前提到的,我不适用于PK/auto - 在某些表格中增加,那么我应该怎么做才能获得更改完成的特定ID?

请指导我... GEEKS !!!

+0

请给我一些反馈.... – 2010-04-09 07:14:07

+0

我需要更多的支持 – 2010-04-09 11:37:04

回答

1

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

在这太问题的一些想法:

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

+0

@Pekka感谢的方向,但我需要在运行应用的触发器每一个管理员操作,以便在运行时创建关键字段听起来非常tredious ..指导我如何实现我的目标? – 2010-04-09 11:40:19