です。制限はありません。can usecmin +1
の式です。もちろん、挿入するすべてのテーブルを知っている必要があります。私のデモでは、私は挿入だけでそれを行う方法を示しています、更新と削除は、とにかく、試してみるためにコードをxmaxを含むもっと多くのロジックが必要になります...
サンプル:
t=# create table ut1(i int);
CREATE TABLE
t=# create table ut2(i int);
CREATE TABLE
t=# insert into ut1 select generate_series(1,10);
INSERT 0 10
t=# insert into ut2 select generate_series(1,10);
INSERT 0 10
デモ:
t=# begin;
BEGIN
t=# insert into ut1 select 1;
INSERT 0 1
t=# insert into ut2 select 1;
INSERT 0 1
t=# insert into ut2 select generate_series(1,2);
INSERT 0 2
t=# insert into ut1 select generate_series(1,2);
INSERT 0 2
t=# select greatest(max(ut1.cmin::text::int),max(ut2.cmin::text::int)) from ut2 join ut1 on ut1.xmin = ut2.xmin and (ut1.xmin)::text::bigint = txid_current();
greatest
----------
3
(1 row)
t=# end;
COMMIT
t=# begin;
BEGIN
t=# insert into ut1 select generate_series(1,2);
INSERT 0 2
t=# insert into ut2 select generate_series(1,2);
INSERT 0 2
t=# select greatest(max(ut1.cmin::text::int),max(ut2.cmin::text::int)) from ut2 join ut1 on ut1.xmin = ut2.xmin and (ut1.xmin)::text::bigint = txid_current();
greatest
----------
1
(1 row)
t=# end;
COMMIT
どのようにsample_table VALUES( 'A'、 'B')、( 'C'、 'D')。INSERT INTO '数えます;'や 'INSERT INTO sample_table SELECT a、b FROM x; '?あなたは本当に何を達成しようとしていますか? – clemens
私はキュー内のコマンドの数を数えたいだけです(トランザクションの開始後に挿入されたコマンドを挿入してください)。 –
Postgresには「キュー」がありません。同時アクセスは[MVCC](https://en.wikipedia.org/wiki/Multiversion_concurrency_control)で処理されます。誰も保留中の変更の数をカウントしていません。あなたが本当に必要としているのであれば、あらゆるテーブルのすべてのレコードを掘り下げ、['xmin'](https://www.postgresql.org/docs/current/static/ddl-system- columns.html)を['txid_current()'](https://www.postgresql.org/docs/current/static/functions-info.html#idm46428705509888)と比較しますが、大規模なデータベースでは数分かかります時間。 –