without with primary not create autoincrement auto_increment sqlite vb6 auto-increment

with - Cómo devolver el valor de la columna AUTO INCREMENT en SQLite con VB6



sqlite insert without primary key (5)

Tengo una tabla en SQLite:

CREATE TABLE "EventType" ( [EventTypeID] INTEGER PRIMARY KEY, [EventTypeName] VARCHAR(50) NOT NULL UNIQUE );

Como EventTypeID es un número entero y una clave principal, eso automáticamente lo convierte en una columna de incremento automático, y eso funciona bien.

Me gustaría insertar una fila en la tabla y obtener el valor recién incrementado de VB6.

Dim oRs as Recordset dim oCmd as new Command oCmd.ActiveConnection = GetConnection() oCmd.Source = "insert into EventType (EventTypeName) values (''blah'')" oCmd.Execute

¿Existe una forma automática de recuperar el EventTypeID recién creado sin tener que emitir otra consulta (seleccione max (EventTypeID) de EventType))?

Me parece recordar desde VB6 días hace mucho tiempo, que había una manera de hacer eso.


No uso VB, así que no sé cuál es la interfaz que está utilizando con su base de datos, pero, como dijo Bendewey, hay una función en la API c llamada sqlite3_last_insert_rowid() que devolverá la clave entera primaria para el última fila insertada, por lo que podría buscar una función similar en su interfaz.

Si eso no funciona, puede usar la consulta específica de SQLite:

SELECT last_insert_rowid()


Puede llamar a SELECT last_insert_rowid() después de su inserción


Si uso

SELECT last_insert_rowid()

devuelve el último rowid , puede usar:

SELECT last_insert_rowid() AS rowid FROM table_name LIMIT 1

para obtener el último rowid para una tabla individual


Ejecute esta consulta dentro de su código:

SELECT SEQ from sqlite_sequence WHERE name=''tablename''


¿Soporta SQLite SCOPE_IDENTITY?

Consulte las preguntas frecuentes . La función sqlite3_last_insert_rowid () lo hará. Sin embargo, cuidado con los factores desencadenantes

No probado, pero debería poder enviar ambas declaraciones en una sola llamada. Ha pasado un tiempo desde que escribí cualquier VB6. Además, esto no es seguro para inyección SQL.

Dim oRs as Recordset dim sSql as String sSql = "INSERT INTO EventType (EventTypeName) VALUES (''blah''); SELECT last_insert_rowid() FROM EventType" oRs.Open sSql oConn