On Oct 19, 2006, at 10:30 , John D. Burger wrote:

cckramer wrote:

I have table for online chat system that keep messages sent between users.

Question: is it okay to use timestamp as primary key, or there is
possibility of collision? (Meaning two processes may INSERT into table
within same millisecond.) It is a web application.

tometzky wrote:

If your insert fail you can always try again after some random short
time.

But then the timestamp field does not accurately represent the actual time of the event. If you really want a primary key, and you really don't want to just use a sequence default, I would make the key a composite:

  PRIMARY KEY (user_id_from, user_id_to, message_time)

This should cut way down on the possibility of key collision.

Only if each message is contained in its own transaction since now() is effectively a constant throughout a transaction. In this case, I would choose a surrogate key since it is likely that the table will be referenced.

-M

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to