0

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

所以我刚刚读到了触发器,这让我有兴趣尝试一下。

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

(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 上的索引而不是主键,我添加了时间戳和类型)

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

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

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

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

4

1 回答 1

0

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

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

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

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

示例表结构:

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)
于 2012-07-30T09:38:44.227 回答