我在这里有一项任务来记录数据库中的更改。
所以我刚读过关于触发器的内容,这让我有兴趣尝试一下。
我在数据库中得到了这个表,描述了客户信息,
(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上的主键,我添加了时间戳和类型)
(键入查询的类型(插入,删除或更新))
现在,我想在执行更新/插入/删除查询时触发表中每行的更改。
但我只想插入所做的更改而不是旧表中的每一列。
这是可能的还是你推荐另一个方法?
答案 0 :(得分:0)
基本上有两种方法可以记录在主表上完成的所有更改:
触发器是个不错的选择。
在所有存储过程中的每次插入,更新,删除语句之后,将插入写入更改日志表。
我通常更喜欢第二种方法,因为它与触发器相比要快得多。
示例表结构:
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)