【发布时间】:2021-01-03 20:23:39
【问题描述】:
我有这样的声明:
$count=0;
while($row = pg_fetch_assoc($result)){
$sql=("INSERT INTO joblist (job_no, billed, completed, paid, paid_amount, inv_no, invoice, type, o_submitted, approval_date, gals, jobtype, name, state, region, territory)
VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE
job_no=VALUES(job_no), billed=VALUES(billed),completed=VALUES(completed), paid=VALUES(paid), paid_amount=VALUES(paid_amount), inv_no=VALUES(inv_no), invoice=VALUES(invoice), type=VALUES(type), o_submitted=VALUES(o_submitted), approval_date=VALUES(approval_date), gals=VALUES(gals), jobtype=VALUES(jobtype), name=VALUES(name), state=VALUES(state), region=VALUES(region), territory=VALUES(territory)");
$stmt = $conn->prepare($sql);
$stmt->bind_param("ssssssssssssssss",$job_no, $billed, $completed, $paid, $paid_amount, $inv_no, $invoice, $type, $o_submitted, $approval_date, $gals, $jobtype, $name, $state, $region, $territory);
$stmt->execute();
$count++;
}
问题是,我无法区分更新的行和插入的行。有没有办法我可以做到这一点? 我知道我可以使用受影响的行函数,但如果更新/插入,它的读数相同。有任何想法吗?谢谢!
【问题讨论】:
-
此 SQL 语法不适用于 PostgreSQL。如果你的意思是
INSERT ... ON CONFLICT,上次我查看受影响的行数是插入的行数。
标签: php sql postgresql upsert on-duplicate-key