我已经读完了这一点:是否可以插入一行,但只有当值已更改?
How do I insert into a database only if a value has changed?
所以我的问题是非常密切的,但它不是exaclty相同。
我有4个 “主要” 列(即我有我的所有表的4相同的列)的表:
id
- INT - AUTOINCid_origin
- INT - ID,当第一记录的创建date_v_start
- 日期时间 - 启动记录date_v_end
的有效日期 - 日期时间 - 记录的有效期结束(如果NULL
这是当前“有效”的记录)
下面是特定于该表中的某些其他领域: - summary
- 文本 - detail
- 文本
知道这一点,当我有一些已被改变成表,这是我做的:
- 我更新当前记录的
date_v_end
为 “NOW()” - 我插入一个新的记录,与
date_v_start
=以前的 =date_v_end
=NULL
和(当然)新值summary
和detail
。
我的问题是,如果summary
和detail
值都没有改变,我不希望插入新的记录,这是浪费时间和硬盘驱动器的空间。
有没有一种方法(如果可能的话在一杆)做这样的事情:
“如果summary<>'a value' or detail<>'another value' then update this record and insert this new one
”
?
所以,我的问题,我上面提供的链接之间的区别是: - 有超过一个字段比较 - 有两个请求 - 我想使它在如果请求可能。
您可以在应用程序中编写逻辑,使用存储过程或使用触发器。哪些是可以的? – Jon 2012-04-21 19:07:08
可能使用触发器,或使用存储过程。如果可能的话,我希望兼容'mysql'和'postgresql' – 2012-04-21 19:08:22