On 2/20/20, Andy KU7T <k...@ku7t.org> wrote: > Hi, > I added a randomblob(16) to each record of a Sqlite table via a trigger with > the goal of global uniqueness. Is that the correct approach or would it be > better to pass Guid from .Net? I am using System.Data.Sqlite. The following > article got me questioning the usage of randomblob: > https://devblogs.microsoft.com/oldnewthing/20120523-00/?p=7553
The author of that article, "Raymond", assumes that the random number generator in the SQL database engine is not cryptographically strong. That assumption is not correct for SQLite, which does you a cryptographically strong PRNG. And the SQLite PRNG is seeded from /dev/random on unix. Now, on Windows systems, the seeding is not quite as strong as it is on unix (unless you compile with -DSQLITE_WIN32_USE_UUID) but it is still sufficient to reduce the changes of a collision between two randomblob(16) calls to practically zero. So, I think randomblob(16) is a fine way to generate a UUID. Though, I tend to use randomblob(20), and I often run it through hex() too, so that it is human-readable. -- D. Richard Hipp d...@sqlite.org _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users