我需要你的帮助,
我有一个包含 n 次插入和更新循环操作的查询。
我决定使用“UPSERT”,因为它不需要循环操作。
ex:
WITH upsert AS
(UPDATE employee_table
SET rollno=input_rollno,
name=input_name
RETURNING *)
INSERT INTO employee_table (rollno, name)
SELECT 'input_rollno',input_name
from employee_table
WHERE NOT EXISTS (SELECT * FROM upsert);
查询工作正常,现在的问题是,我想要单个插入和更新的受影响行数。
我尝试在更新后添加“获取诊断”,但查询失败。我只能在结束 upsert 后进行行计数。
当我添加更新后获取诊断行计数时,出现错误:
前任:
——这是错误的。这是一个例子。
declre
num_rows INTEGER :=0;
num_rows1 INTEGER :=0;
WITH upsert AS
(UPDATE employee_table
SET rollno=input_rollno,
name=input_name
RETURNING *)
GET DIAGNOSTICS num_rows = ROW_COUNT
INSERT INTO employee_table (rollno, name)
SELECT 'input_rollno',input_name
from employee_table
WHERE NOT EXISTS (SELECT * FROM upsert);
GET DIAGNOSTICS num_rows1 = ROW_COUNT;
我需要知道更新时有多少行受到影响以及插入时有多少行受到影响...
使用 PostgreSQL 9.3