Mysql триггер или кодирование в PHP?

У меня есть стол 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 в моей короткой карьере пока, но я могу сделать это, если это лучше практиковать.

1

Решение

Если вы можете сделать триггер, было бы намного лучше использовать это.

Причина этого в том, что если по какой-то причине вы забудете написать код PHP для этого (в какой-то странной ситуации) — у вас будут отсутствующие, не связанные данные — иначе известные как потерянные данные, для которых нет соответствующей строки или набора рядов.

Вот ссылка на страницу документации MySQL для триггеров: http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]