- It opens every database (without creating it) and sets the timeout to ten seconds. (In case that another process is busy with the database.)
- It tries to execute a BEGIN IMMEDIATE.
- If this goes wrong because the database is locked: print it.
- If something goes wrong for any other reason the program is terminated.
- If the BEGIN IMMEDIATE was successful do a ROLLBACK.
- Close the database.
#!/usr/bin/env tclsh
package require sqlite3
set timeout [expr {10 * 1000}]
foreach database $argv {
sqlite db $database -create False
db timeout $timeout
if {[catch {db eval "BEGIN IMMEDIATE"} SQLError]} {
if {$SQLError ne "database is locked"} {
error "UNEXPECTED ERROR: $SQLError"
}
puts "The database $database is locked."
} else {
db eval ROLLBACK
}
db close
}As always: comments, tips and questions are appreciated.
| Category SQLite | [Category System Maintenance] | Category Utilities |

