mysql – How, when inserting data, add only records with a unique column value, and if the value exists, update the record?


there is a table with the following structure:

ID     IP          Timestamp
1   1111111111
2   1111111112

You need to do the following: new records should not be written to the table, for which the IP corresponds to the IP in the table, but the Timestamp in the table should only be updated , otherwise – a new record with a new IP is added

ID     IP          Timestamp
1   1111111112

tried putting индекс->unique , but then Timestamp is not updated

how to implement this business without sending 2 requests?


I propose to put a unique key on the ip column, set AUTO_INCREMENT on id ( but it is better to remove this column altogether) and use a query like INSERT ... ON DUPLICATE KEY UPDATE

insert into `table_name` (`ip`, `last_modified`) 
       values ($ip, UNIX_TIMESTAMP()) 
       on duplicate key update `last_modified`=UNIX_TIMESTAMP()
Scroll to Top