INSERT OR REPLACE causes UNIQUE constraint failure on vec table primary key

Author: davejitsuCreated Feb 7, 2026Updated Aug 4, 2026

Microsoft.Data.Sqlite.SqliteException: 'SQLite Error 1: 'UNIQUE constraint failed on vec_comments primary key'.'

csharp
private int UpsertEmbeddings(string tableName, IEnumerable<VectorEmbedding> vectorEmbeddings)
{
    var affectedRows = 0;
    using var transaction = connection.BeginTransaction();
    using var command = connection.CreateCommand();
    command.CommandText = $"INSERT OR REPLACE INTO {tableName} (rowid, embedding) Values (@id, @embedding);";
    command.Parameters.Add("@id", SqliteType.Integer);
    command.Parameters.Add("@embedding", SqliteType.Blob);

    foreach (var embedding in vectorEmbeddings)
    {
        command.Parameters["@id"].Value = embedding.Id;
        command.Parameters["@embedding"].Value = MapVectorToBytes(embedding.Embedding);
        affectedRows += command.ExecuteNonQuery();
    }

    transaction.Commit();
    return affectedRows;
}