Когато стартирам кода:
row = db:first_row("SELECT MIN(rowid) from table")
local minID = row.rowid
row = db:first_row("SELECT MAX(rowid) from table")
local maxID = row.rowid
Получавам грешка, казваща:
Runtime error: ...\db_test\main.lua:33: attempt to call method 'first_row' (a nil value)
stack traceback:
[C]: in function 'first_row'
...\main.lua:33: in main chunk
Тази точно същата SQL заявка работи в Python в същата база данни.
ROWIDs и INTEGER PRIMARY KEY
Всеки ред от всяка таблица на SQLite има 64-битов целочислен ключ със знак, който уникално идентифицира реда в неговата таблица. Това цяло число обикновено се нарича rowid. Стойността на rowid може да бъде достъпна с помощта на едно от специалните независими от регистър имена rowid, oid или rowid вместо име на колона.
За всеки, който се интересува, работният код в моя случай е:
local minId
local maxId
for row in db:nrows("SELECT MIN(rowid) AS `rowmin` FROM " .. table) do
minId = row.rowmin
end
for row in db:nrows("SELECT MAX(rowid) AS `rowmax` FROM " .. table) do
maxId = row.rowmax
end