2
我怎樣才能以「線程安全」的方式編寫一個函數,例如返回數字0-7循環法,以確保每次調用都有一個新的數字(如果大於7則環繞)?Postgres函數返回數字0-7循環?
它應該是一個全局函數,所以如果「連接1」調用它並獲得數字3,「連接2」在調用時應該得到數字4等等。
我怎樣才能以「線程安全」的方式編寫一個函數,例如返回數字0-7循環法,以確保每次調用都有一個新的數字(如果大於7則環繞)?Postgres函數返回數字0-7循環?
它應該是一個全局函數,所以如果「連接1」調用它並獲得數字3,「連接2」在調用時應該得到數字4等等。
按照docs,可以循環序列:
t=# create sequence rr07 minvalue 0 maxvalue 7 cycle;
CREATE SEQUENCE
t=# select nextval('rr07');
nextval
---------
0
(1 row)
t=# select nextval('rr07');
nextval
---------
1
(1 row)
t=# select nextval('rr07');
nextval
---------
2
(1 row)
t=# select nextval('rr07');
nextval
---------
3
(1 row)
t=# select nextval('rr07');
nextval
---------
4
(1 row)
t=# select nextval('rr07');
nextval
---------
5
(1 row)
t=# select nextval('rr07');
nextval
---------
6
(1 row)
t=# select nextval('rr07');
nextval
---------
7
(1 row)
t=# select nextval('rr07');
nextval
---------
0
(1 row)
只是創建一個sequece –