我正在使用REPLACE语句在具有复合主键的表中插入/更新记录。 如何向现有值添加新值并使用REPLACE语句更新记录? 这是我的sql:
function leaveBalanceRecord($f3)
{
$userID = $this->f3->get('userID');
$leaveType = $this->f3->get('leaveType');
$leaveBalance = $this->f3->get('leaveBalance');
$sql = "REPLACE INTO users_leave_balance
(user_id, period, leave_type, leave_balance, rollable_till_date)
VALUES ($userID, '2017-01-03', $leaveType, $leaveBalance, 3.05)";
$results = $this->db->exec($sql);
return $results;
}
EG。我有以下记录:
user_id | period | leave_type | leave_balance
134 | 2017-01 | 1 | 10.0
现在,如果用户尝试使用user_id - 134,期间 - 2017-01,leave_type - 1和leave_balance - 3插入另一条记录,我需要将当前余额3添加到现有余额10.0并更新13.0
user_id, period, and leave_type
列构成复合键
答案 0 :(得分:0)
这不能与REPLACE INTO
一起使用,但您可以使用INSERT INTO
,ON DUPLICATE KEY
和UPDATE
的组合,而UPDATE
将提供用现有数据连新的方法。
示例:
INSERT INTO users SET userid = 8, username = "Foobar"
ON DUPLICATE KEY
UPDATE username = CONCAT(username, "123")
这基本上会尝试使用用户ID" 8"来插入新用户。和用户名" Foobar"。 userid是我的主键。如果它存在,它将改为更新现有用户并附加" 123"用户名。