更新重复键上的复合键

Update Composite Key On Duplicate Key

我需要更新新行,如果两者都存在:date='$dat'empId='$who(作为组合键)。但如果其中之一或两者不同,请插入:

$sql= "INSERT INTO history 
       SET endtimestamp='$now',end='$signature',date='$dat',empId='$who' 
       ON DUPLICATE KEY UPDATE endtimestamp='$now',end='$signature'";

来自 MySQL 文档: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

If you specify ON DUPLICATE KEY UPDATE, and a row is inserted that would cause a duplicate value in a UNIQUE index or PRIMARY KEY, an UPDATE of the old row is performed.

主键是单独的(每列)。您需要创建一个包含两列的复合 UNIQUE 索引,然后更新才能正常工作。

运行 数据库中的这个:

CREATE UNIQUE INDEX unq_employee_id_date ON history (empId, date);