I've started using GUIDs over auto-increment integers for my primary keys.
However, during development I'm used to querying (from SQL management studio or visual studio) database in order to see what records my application just inserted, and I'm pissed off by the fact that I cannot order by primary key desc in order to see the most recent records.
Is there a way to accomplish tihs?
You can't order a GUID column based on insertion order. You'll need to rely on another column.
My suggestion is to add a column called CreationMoment
as a DateTime
with a default value of GETDATE()
. Theoretically you could have collisions (i.e. identical date / time of creation), so you'll have to decide if that data type is appropriate. In my experience it's never been an issue.
You can't, you have to add new field bigint with auto increment and rely on, no need to make it key. no collisions and no size problem with bigint
Both @Yuck and @Sameh have good answers, but I think a TIMESTAMP column is a better fit for your needs. It is guaranteed to be unique, and can be sorted using ORDER BY.
MSDN - timestamp (Transact-SQL)