Я относительно запутался об этом ...MySQL поле обновления на вставке, если другое поле (не ключ) изменился
У меня есть таблица, как:
+----------------+--------------------------------------------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+----------------+--------------------------------------------------+------+-----+-------------------+-----------------------------+
| dhcp | int(10) unsigned | NO | PRI | 0 | |
| ip | int(10) unsigned | NO | PRI | 0 | |
| mac | varchar(17) | YES | MUL | NULL | |
| lease | enum('fr','a','fi','a','u') | NO | MUL | free) | | |
| date | timestamp | NO | MUL | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| uid | varchar(255) | YES | | NULL | |
| starts_date | datetime | YES | | NULL | |
| starts_weekday | tinyint(1) | YES | | NULL | |
| ends_date | datetime | YES | | NULL | |
| ends_weekday | tinyint(1) | YES | | NULL | |
| first_seen | datetime | YES | | NULL | |
+----------------+--------------------------------------------------+------+-----+-------------------+-----------------------------+
Я просто добавил first_seen колонка. Идея заключается в том, что я буду использовать INSERT ... ON DUPLICATE KEY UPDATE. dhcp
и ip
являются правыми первичными ключами, так как я хочу иметь только одну запись для них за раз. Поэтому, если изменяется mac
, он должен обновить существующую строку, если она существует для этой комбинации dhcp, ip.
однако, я хочу иметь first_seen обновляется каждый раз, когда (IP, DHCP, макинтош) сочетание видно ... то есть, если значение изменения «МКВ», я хочу, чтобы обновить first_seen. Если значение «mac» остается неизменным, я хочу оставить first_seen тем же.
Есть ли простой способ сделать это в SQL ... например, IF() или что-то еще? или я должен обрабатывать это с помощью другого SELECT в скрипте PHP (имея в виду, что мы разбираем файл для получения этих данных и вставляем строки abub 10-16k, поэтому время является фактором).
Спасибо, Джейсон