The following query is performed concurrently by two threads logged in with two different users:

    WITH raw_stat AS (
        SELECT
           host(client_addr) as client_addr,
           pid ,
           usename
        FROM
           pg_stat_activity
        WHERE
           usename = current_user
    )
    INSERT INTO my_stat(id, client_addr, pid, usename)
        SELECT
             nextval('mystat_sequence'), t.client_addr, t.pid, t.usename
        FROM (
            SELECT
                client_addr, pid, usename
            FROM
                raw_stat s
            WHERE
                NOT EXISTS (
                   SELECT
                      NULL
                   FROM
                      my_stat u
                   WHERE
                      current_date = u.creation
                   AND
                      s.pid = u.pid
                   AND
                      s.client_addr = u.client_addr
                   AND
                      s.usename = u.usename
                )
        ) t;

From time to time, I get the following error: "tuple concurrently updated"

I can't figure out what throw this error and why this error is thrown. Can you shed a light ?

-------------------------------
Here is the sql definition of the table mystat.

**mystats.sql**

    CREATE TABLE mystat
    (
      id bigint NOT NULL,
      creation date NOT NULL DEFAULT current_date,

      client_addr text NOT NULL,
      pid integer NOT NULL,
      usename name NOT NULL,
      CONSTRAINT statistiques_connexions_pkey PRIMARY KEY (id)
    )
    WITH (
      OIDS=FALSE
    );


--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to