У меня есть стол 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
действие. Сейчас,
а) использовать PHP
код (PDO
transaction
) чтобы сначала захватить этот ряд & вставить в другую таблицу, затем выполнить UPDATE
запрос по этой конкретной строке?
б) использовать trigger
на этом столе.
Какой процесс лучше практики & более эффективным? Есть ли другой способ добиться этого?
Я не пользовалась trigger
в моей короткой карьере пока, но я могу сделать это, если это лучше практиковать.
Если вы можете сделать триггер, было бы намного лучше использовать это.
Причина этого в том, что если по какой-то причине вы забудете написать код PHP для этого (в какой-то странной ситуации) — у вас будут отсутствующие, не связанные данные — иначе известные как потерянные данные, для которых нет соответствующей строки или набора рядов.
Вот ссылка на страницу документации MySQL для триггеров: http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html
Других решений пока нет …