我需要更新新行: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'";
答案 0 :(得分:2)
从MySQL文档中: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
如果指定ON DUPLICATE KEY UPDATE,则插入一行 会导致 UNIQUE索引或 PRIMARY KEY 中的重复值, 执行旧行的更新。
主键是个人(每列)。您需要创建包含两列的复合UNIQUE索引,然后更新才能正常工作。
在数据库上运行:
CREATE UNIQUE INDEX unq_employee_id_date ON history (empId, date);