У вас будет проблема, или нет, в зависимости от того, как вы считаете, что вы не можете использовать: -
CREATE TABLE `log` (
`time` REAL NOT NULL DEFAULT CURRENT_TIMESTAMP,
`data` BLOB NOT NULL
) WITHOUT ROWID;
потому что: -
Каждая таблица БЕЗ ROWID должна иметь ПЕРВИЧНЫЙ КЛЮЧ. Возникла ошибка
если в инструкции CREATE TABLE с предложением WITHOUT ROWID отсутствует
ОСНОВНОЙ КЛЮЧ.
Кластерные индексы и оптимизация БЕЗ ПУТИ
Таким образом, вы также можете сделать столбец time ПЕРВИЧНЫМ КЛЮЧОМ.
но проблема в том, что точность REAL недостаточна для обработки
микросекундное разрешение, и, следовательно, две соседние записи могут иметь
то же самое время, которое нарушает ограничение PRIMARY KEY.
Тогда вы могли бы использовать составной ПЕРВИЧНЫЙ КЛЮЧ, где требуемая точность удовлетворяется несколькими столбцами (второй столбец, вероятно, более чем достаточен), возможно, в соответствии с: -
CREATE TABLE log (
time_datepart INTEGER,
time_microsecondpart,
data BLOB NOt NULL,
PRIMARY KEY (time_datepart,time_microsecondpart)
) WITHOUT ROWID;
Столбец time_microsecondpart не обязательно должен быть микросекундами, это может быть счетчик, полученный из другой таблицы, аналогично тому, как таблица sqlite_sequence используется при использовании AUTOINCREMENT (за вычетом необходимости в столбце, который содержит имя таблицы, к которой прикреплена строка).