我有一张表hardware_description
:
+------------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+----------------+
| Computer_id | int(11) | NO | PRI | NULL | auto_increment |
| Emp_id | int(11) | NO | MUL | NULL | |
| PC_type | varchar(20) | YES | | NULL | |
| Operating_system | varchar(20) | YES | | NULL | |
| Product_key | varchar(30) | YES | | NULL | |
| Assign_date | date | YES | | NULL | |
| DVD_ROM | varchar(20) | YES | | NULL | |
| CPU | varchar(30) | YES | | NULL | |
| IP_address | varchar(30) | YES | | NULL | |
| MAC_address | varchar(30) | YES | | NULL | |
| Model_name | varchar(30) | YES | | NULL | |
| Model_number | varchar(30) | YES | | NULL | |
| Monitor | varchar(30) | YES | | NULL | |
| Processor | varchar(30) | YES | | NULL | |
| Product_name | varchar(30) | YES | | NULL | |
| RAM | varchar(20) | YES | | NULL | |
| Serial_number | varchar(30) | YES | | NULL | |
| Vendor_id | varchar(30) | YES | | NULL | |
Emp_id
来自foreign key
表格employees
。
当我更新特定行时,我希望该行的现有数据与该update
操作的时间戳一起保存在另一个表中。现在,
a)我应该使用PHP
代码(PDO
transaction
)来抢占该行&插入另一个表然后在该特定行上执行UPDATE
查询?
b)在此表上使用trigger
。
哪个过程是更好的做法&更高效?还有另一种方法可以达到这个目的吗?
到目前为止,我在短暂的职业生涯中没有使用trigger
,但如果是更好的练习,我可以做到。
答案 0 :(得分:2)
如果你可以做一个触发器,那么使用它会好得多。
原因是如果由于某种原因你忘记编写PHP代码来执行此操作(在一些奇怪的情况下) - 你会丢失无关的数据 - 否则称为孤立数据,它们没有相应的一行或一组行。
以下是触发器的MySQL文档页面的链接:http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html