Un *_*mme 48 sql postgresql sql-update
PostgreSQL的8/9我的数据库驱动程序不返回的执行时,受影响的记录计数INSERT或UPDATE.
PostgreSQL提供非标准语法" RETURNING ",这似乎是一个很好的解决方法.但是语法可能是什么?该示例返回记录的ID,但我需要计数.
INSERT INTO经销商(做,DNAME)VALUES(DEFAULT 'XYZ小部件') RETURNING根本 ;
mer*_*ial 69
我知道这个问题是oooolllllld,我的解决方案可能过于复杂,但这是我最喜欢的解决方案!
无论如何,我必须做同样的事情,让它像这样工作:
-- Get count from INSERT
WITH rows AS (
INSERT INTO distributors
(did, dname)
VALUES
(DEFAULT, 'XYZ Widgets'),
(DEFAULT, 'ABC Widgets')
RETURNING 1
)
SELECT count(*) FROM rows;
-- Get count from UPDATE
WITH rows AS (
UPDATE distributors
SET dname = 'JKL Widgets'
WHERE did <= 10
RETURNING 1
)
SELECT count(*) FROM rows;
Run Code Online (Sandbox Code Playgroud)
有一天我真的不得不四处写一个爱的十四行诗给PostgreSQL的WITH子句......
Sco*_*ley 23
我同意Milen,你的司机应该为你做这件事.您使用什么驱动程序以及使用何种语言?但是如果您使用的是plpgsql,则可以使用GET DIAGNOSTICS my_var = ROW_COUNT;
http://www.postgresql.org/docs/current/static/plpgsql-statements.html
您可以ROW_COUNT在更新后插入或使用以下代码:
insert into distributors (did, dname) values (DEFAULT, 'XYZ Widgets');
get diagnostics v_cnt = row_count;
Run Code Online (Sandbox Code Playgroud)