2014-11-25 2 views
1

Возможно ли иметь SQLITE DDL в этом случае (LineNum является столбцом AUTO INCREMENT является частью столбца TransDate). AUTO INCREMENT VALUES повторно используются, если я вставляю строку с новыми ежедневными транзакционными записями. столбец AUTO INCREMENT (LineNum) будет генерировать последовательность из значений 1 при вставке новых транзакций. См. Пример ниже.SQLITE DDL ИСПОЛЬЗОВАНИЕ AUTO INCREMENT

TransDate LineNum GL_Number 
20141011 1 2163370000 
20141011 2 2163370000 
20141011 3 2163370000 
20141011 4 2163370000 
20141011 5 2163370000 
20141011 6 2163370000 
20141011 7 2163370000 
20141011 8 2163370000 
20141011 9 2163370000 
20141011 10 2163370000 
20141012 1 2163370000 
20141012 2 2163370000 
20141012 3 2163370000 
20141012 4 2163370000 
20141012 5 2163370000 
20141012 6 2163370000 
20141012 7 2163370000 
20141012 8 2163370000 
20141012 9 2163370000 
20141012 10 2163370000 

ответ

1

Нет; в SQLite, autoincrementing работает только в том случае, если только столбец является основным ключом.

Чтобы вычислить суточный номер строки, вы должны подсчитать, сколько строк в тот же день уже есть:

SELECT COUNT(*) + 1 
FROM MyTable 
WHERE TransDate = 20141013 
+0

К сожалению, я не ясно с альтернативным решением. если бы вы могли направить, как вы собираетесь подходить и решать эту проблему. –

+0

Этот запрос вычисляет номер строки, который будет использоваться для следующей вставки в эту дату. –

+0

номера записей могут варьироваться в зависимости от заданной даты. скажем, этот запрос вычисляет 14 записей в функции count + 1 равен 15. Это означает, что LineNum начинается с 15 для следующей вставки в эту дату. Я хочу, чтобы он снова использовал LineNum, начиная с 1. Я не с тобой в данный момент. –