在更新/删除/插入时使用Mysql触发器
问题描述:
我在这里得到了一个任务来记录数据库中的更改。在更新/删除/插入时使用Mysql触发器
所以我刚刚读了关于触发器,这让我有兴趣尝试一下。
我得到这个数据库中的表是信息描述了客户,
(ID fornamn,efternam ..等是列名和信息下面是值)
此表被称为“昆德”
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 protected] 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
(唯一diffirance是指数的,而不是对ID主键和我添加的时间戳和类型)
(键入查询(插入件的类型,删除或更新))
现在我想当我执行更新/插入/删除查询时,触发表中每一行的更改。
但我只想插入所做的更改,而不是旧表中的每一列。
这是可能的还是你建议另一种方法?
答
基本上有登录主表所做的所有更改两种方法:
触发是不错的选择,如果你想登录到表进行全球范围内的所有变化。
在插入,更新,删除所有存储过程中的语句后,将插入写入更改日志表中。
我通常更喜欢第二种方法,因为它比触发器快得多。
样本表结构:
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-30 09:34:12
Scott S:是的,我是 – oBo 2012-07-30 09:35:03
好的,因为它听起来有点像你想**将某处的更改插入到另一个表中。 – 2012-07-30 09:37:33