I seem to have cracked it with a cut-down example

package require sqlite3
set gDb {}
set db_fl_nm "[pwd]\\test.db" ;# :memory:

proc mbx {x} {
    set answer [tk_messageBox -message $x -type yesno -icon question]
    switch -- $answer {
        yes {}
        no exit
    }
}
proc mfl {x} {global gOfl; puts $gOfl $x}

proc tbl_app {tbl data} {
    set max_id [expr [gDb eval "select max(id) FROM $tbl;"]]
    if {$max_id == ""} {set max_id 0}
    set id [expr $max_id + 1]
    gDb eval "insert into $tbl values ( $id, $data )"
}

proc doit {db_pth} {
    global gDb
    sqlite3 gDb $db_pth
    gDb eval "drop table if exists itms"
    gDb eval "drop table if exists aliases"
    gDb eval     "create table if not exists itms
                (id integer primary key, std_nm text, raw_nm text);"
    gDb eval     "create table if not exists aliases
                (id integer primary key, std_nm text, raw_nm text);"
    tbl_app itms "null, 'aaa'"
    tbl_app itms "null, 'bbb'"
    tbl_app itms "null, 'ccc'"
    tbl_app aliases "'std_nm1', 'aaa'"
    tbl_app aliases "'std_nm2', 'bbb'"
    gDb eval     "UPDATE itms SET std_nm=
(SELECT std_nm FROM aliases WHERE itms.raw_nm = aliases.raw_nm);"
                #(SELECT std_nm FROM aliases WHERE itms.raw_nm = 'bbb');"
    gDb close
}

doit $db_fl_nm
exec SQLiteSpy $db_fl_nm





_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to