Hello!

This function doesn't work:
sqlite> select userkey_uninstall();
SQL error: database table is locked

static void userkey_uninstallFunc(sqlite3_context *context, int argc, 
sqlite3_value **argv){
        sqlite3 *db;
    int rc;                     /* Result code */
        const char zSql[] = "DROP TABLE userkeys"; /* An SQL statement */

        db = (sqlite3*) sqlite3_context_db_handle(context);
    rc = sqlite3_exec(db, zSql, NULL, NULL, NULL);
    if( rc != SQLITE_OK ){
                sqlite3_result_error(context, sqlite3_errmsg(db), -1);
                return; 
    }
        // return null value
        sqlite3_result_null(context);
}


But this work fine:
sqlite> select userkey_install();


#define SCHEMA_USERKEY \
"CREATE TABLE userkeys (  -- persistent parameters storage (same as my AOL 
Server module ns_userkey)\n"             \
"        id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,\n"                      
                                    
\
"        save_date REAL NOT NULL DEFAULT (julianday('now')) 
check(cast(save_date as real)=save_date),\n"            \
"        update_date REAL NOT NULL DEFAULT (julianday('now')) 
check(cast(update_date as real)=update_date),\n"      \
"        delete_date REAL NOT NULL DEFAULT '' check(cast(delete_date as 
real)=delete_date or delete_date = ''),\n"  \
"        unit text not null,\n"                                                 
                                    
\
"        param text not null,\n"                                                
                                    
\
"        value text not null,\n"                                                
                                    
\
"        UNIQUE (unit,param) on conflict replace\n"                             
                                    
\
");"


static void userkey_installFunc(sqlite3_context *context, int argc, 
sqlite3_value **argv){
        sqlite3 *db;
    int rc;                     /* Result code */

        db = (sqlite3*) sqlite3_context_db_handle(context);
    rc = sqlite3_exec(db, SCHEMA_USERKEY, NULL, NULL, NULL);
    if( rc != SQLITE_OK ){
                sqlite3_result_error(context, sqlite3_errmsg(db), -1);
                return; 
    }
        // return null value
        sqlite3_result_null(context);
}


Best regards, Alexey Pechnikov.
http://pechnikov.tel/
_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to