[Pljava-dev] Problem with primary key

Eric BOYER Eric.Boyer at insa-toulouse.fr
Tue May 16 14:54:56 UTC 2006


Hello,

I have a problem with primary key !

I have a simple table like :

    Table "public.test"
 Column | Type | Modifiers
--------+------+-----------
 lib    | text | not null
Indexes:
    "test_pkey" PRIMARY KEY, btree (lib)

I have a fonction :
                         List of functions
 Schema |      Name       | Result data type | Argument data types
--------+-----------------+------------------+---------------------
 public | allominitrigger | "trigger"        |
(1 row)

My code for this fonction is :
public static void traiter(TriggerData td) {
             try {
            Connection conn = 
DriverManager.getConnection("jdbc:default:connection");
            Statement stmt = conn.createStatement();
            stmt.execute("insert into test (lib) values('monlib')");
             }
             catch (Exception e) {
             e.printStackTrace();
          }
}

I have the trigger :
trigtest AFTER INSERT ON test FOR EACH ROW EXECUTE PROCEDURE 
allominitrigger()

---------
My test is :
I want insert a row and in my fonction, i wan't to insert the same row 
to test the primary key control

I insert :
insert into test values('monlib');

And I have :
WARNING:  buffer refcount leak: [003] (rel=1663/16922/164335, 
blockNum=1, flags=0x27, refcount=1 1)
WARNING:  relcache reference leak: relation "pk_test" not closed
WARNING:  relcache reference leak: relation "test" not closed
WARNING:  transaction left non-empty SPI stack
HINT:  Check for missing "SPI_finish" calls.

And When I select values :
SELECT * from test;
  lib
--------
 monlib
 monlib
(2 rows)

My primary key is duplicate !

Is it normal ?

Of course, if in my catch I have :

catch (Exception e) {
             e.printStackTrace();
            throw e;
          }

All is OK, postgres doesn't duplicate the primary key !


Thanks for your point of vue !

eric.



More information about the Pljava-dev mailing list