Tenho uma tabela orders
em um banco de dados SQLite:
CREATE TABLE orders
(
clientId INTEGER NOT NULL,
listId INTEGER,
exchangeId NOT NULL,
marketId NOT NULL,
id INTEGER NOT NULL,
accountType NOT NULL,
clientGuid NOT NULL,
side NOT NULL,
type NOT NULL,
status NOT NULL,
price NOT NULL,
stopPrice NOT NULL,
amount NOT NULL,
filled NOT NULL,
cost NOT NULL,
createTime NOT NULL,
updateTime NOT NULL,
PRIMARY KEY(clientId)
);
Quando crio um registro, o excluo e depois crio outro novo registro, obtenho o mesmo clientId (14443):
SQL> INSERT INTO orders (listId, exchangeId, marketId, id, accountType, clientGuid, side, type, status, price, stopPrice, amount, filled, cost, createTime, updateTime) VALUES (19, 'myexchange', 'mymarket', 1163221156, 0, '93c39dd5-bc89-422a-b5e0-a34289ccff44', 0, 0, 1, 778856, 0, 160, 0, 0, 1741356070112000000, 1741356070112000000);
SQL> select * from orders where marketid='mymarket';
(14443, 19, 'myexchange', 'mymarket', 1163221156, 0, '93c39dd5-bc89-422a-b5e0-a34289ccff44', 0, 0, 1, 778856, 0, 160, 0, 0, 1741356070112000000, 1741356070112000000)
SQL> DELETE FROM orders WHERE clientId=14443;
SQL> INSERT INTO orders (listId, exchangeId, marketId, id, accountType, clientGuid, side, type, status, price, stopPrice, amount, filled, cost, createTime, updateTime) VALUES (19, 'myexchange', 'mymarket', 1163221156, 0, '93c39dd5-bc89-422a-b5e0-a34289ccff44', 0, 0, 1, 778856, 0, 160, 0, 0, 1741356070112000000, 1741356070112000000);
SQL> select * from orders where marketid='mymarket';
(14443, 19, 'myexchange', 'mymarket', 1163221156, 0, '93c39dd5-bc89-422a-b5e0-a34289ccff44', 0, 0, 1, 778856, 0, 160, 0, 0, 1741356070112000000, 1741356070112000000)
Mas há o seguinte nos documentos :
O ROWID escolhido para a nova linha é pelo menos um valor maior que o maior ROWID que já existiu na mesma tabela.
Então, de acordo com os documentos clientId
, o registro recriado deveria ser 14444, certo?
O fato de novas clientId
correspondências com pedidos excluídos anteriormente clientId
leva a possíveis bugs se um clientId
dos pedidos excluídos permanecer em algum lugar do aplicativo por engano.
Existe uma maneira de fazer com que o SQLite gere dados únicos clientId
?