On Tue, Jun 2, 2015 at 4:34 AM, Richard Warburton <
richard at skagerraksoftware.com> wrote:

> Hi,
>
> I'm wanting to store data in a way such that I can choose a time in the
> past and view records as they were at that dateTime.  Therefore (in my
> mind), all updates are really inserts with a timestamp.  Ids are suddenly
> no longer primary keys, as many records can have the same id, but a new
> entry must be given a unique id (otherwise it will look like an update for
> an existing entry).
>
> Here's a very simplified view of what I'm currently doing:
> CREATE TABLE data (
> UID INTEGER PRIMARY KEY AUTOINCREMENT,
> Id INTEGER NOT NULL DEFAULT 0, -- shared by updates of the same data entry
>
> Data TEXT,
> User INT, -- who made this update
> At INT, -- when the update was made
> Remove INT NOT NULL DEFAULT 0 -- set to 1 if data entry has been deleted
> );
>
> My initial questions are:
> 1) Do I need UID?  I'm currently using it to ensure a unique Id for when
> the user is creating a new entry.  This however means two operations, an
> Insert, then an Update to set the record's Id to match its UID. It also has
> the overhead of autoincrement, ensuring that UID is never ever reused and
> only goes upwards (I'm currently using MAX(UID)  to get the latest record
> <= the time I'm interested in.  I guess there's no extra storage as rowid
> would exist anyway.
>

if Id == UID always; the question is really, do you need Id?


> 2) Can I auto fill Id to UID on insert instead of having to do two
> operations?
> 3) Am I on track or is there a better way to approach this problem?
>
> Using a GUID key can solve it also... but again if Id is always the same a
UID do you need Id?

Thanks in advance for any feedback.
>
> --
> Richard Warburton
> _______________________________________________
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users
>

Reply via email to