我创建新表并向新表中插入 10 条记录,如下所示:
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)
谁能告诉我为什么最后一次更新会更新多个数据?