在更新/删除/插入时使用Mysql触发器

时间:2012-07-30 09:27:55

标签: php mysql triggers

我在这里有一项任务来记录数据库中的更改。

所以我刚读过关于触发器的内容,这让我有兴趣尝试一下。

我在数据库中得到了这个表,描述了客户信息,

(id fornamn,efternam .. etc是列名,下面的信息是值)

此表名为“kunder”

id  fornamn     efternamn   adress  ort     postnummer  foretag     telefon         email           personNmr   husNmr  organisationsNmr    produkt     uppringd    prioritet   raderad
15  Peter       Tressing    adress  ort     41676       foretag     071234565       email@email.se  123456      4       55658794            Nocria      1           0           0

我把这张表称为kunder_log

id  fornamn     efternamn   adress  ort     postnummer  foretag     telefon         email           personNmr   husNmr  organisationsNmr    produkt     uppringd    prioritet   raderad     timestamp   type

(唯一的困难是索引而不是ID上的主键,我添加了时间戳和类型)

(键入查询的类型(插入,删除或更新))

现在,我想在执行更新/插入/删除查询时触发表中每行的更改。

但我只想插入所做的更改而不是旧表中的每一列。

这是可能的还是你推荐另一个方法?

1 个答案:

答案 0 :(得分:0)

基本上有两种方法可以记录在主表上完成的所有更改:

    如果要记录对全局表所做的所有更改,
  1. 触发器是个不错的选择。

  2. 在所有存储过程中的每次插入,更新,删除语句之后,将插入写入更改日志表。

  3. 我通常更喜欢第二种方法,因为它与触发器相比要快得多。

    示例表结构:

    kunder
        all_columns
    
    kunder_log
        change_log_id INT unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY,
        all_columns
        change_type ENUM('INSERT','UPDATE','DELETE'),
        change_time TIMESTAMP NOT NULL DEFAULT 0,
        change_description VARCHAR(1024)