Eu crio a nova tabela e insiro 10 registros na nova tabela conforme abaixo:
userdb=> CREATE TABLE test_tbl(ID INT PRIMARY KEY, STR VARCHAR);
CREATE TABLE
userdb=> do $$
begin
for r in 1..10 loop
insert into user1.test_tbl(id, str) values(r, r);
end loop;
end;
$$;
DO
userdb=> select * from test_tbl;
id | str
----+-----
1 | 1
2 | 2
3 | 3
4 | 4
5 | 5
6 | 6
7 | 7
8 | 8
9 | 9
10 | 10
(10 rows)
userdb=> \set id floor(random()*(10-1+1))+1
userdb=> select :id;
?column?
----------
7
(1 row)
userdb=> select :id;
?column?
----------
1
(1 row)
userdb=> select :id;
?column?
----------
4
(1 row)
userdb=> select :id;
?column?
----------
7
(1 row)
userdb=> UPDATE test_tbl SET str=111 WHERE ID=:id;
UPDATE 1
userdb=> UPDATE test_tbl SET str=222 WHERE ID=:id;
UPDATE 1
userdb=> UPDATE test_tbl SET str=333 WHERE ID=:id;
UPDATE 2
userdb=> select * from test_tbl;
id | str
----+-----
2 | 2
4 | 4
5 | 5
6 | 6
7 | 7
8 | 8
1 | 111
3 | 222
9 | 333
10 | 333
(10 rows)
Alguém poderia me dizer por que a última atualização atualizará vários dados?