Add unique constraint on schema_version.lock schema. Use conflict clause in sql.

This commit is contained in:
Erik Johnston 2015-03-04 13:52:18 +00:00
parent b4c38738f4
commit 5eefd1f618
2 changed files with 5 additions and 4 deletions

View File

@ -645,7 +645,7 @@ def _setup_new_database(cur):
cur.executescript(sql_script) cur.executescript(sql_script)
cur.execute( cur.execute(
"INSERT INTO schema_version (version, upgraded)" "INSERT OR REPLACE INTO schema_version (version, upgraded)"
" VALUES (?,?)", " VALUES (?,?)",
(max_current_ver, False) (max_current_ver, False)
) )
@ -748,7 +748,7 @@ def _upgrade_existing_database(cur, current_version, delta_files, upgraded):
) )
cur.execute( cur.execute(
"INSERT INTO schema_version (version, upgraded)" "INSERT OR REPLACE INTO schema_version (version, upgraded)"
" VALUES (?,?)", " VALUES (?,?)",
(v, True) (v, True)
) )
@ -803,7 +803,7 @@ def prepare_sqlite3_database(db_conn):
if row and row[0]: if row and row[0]:
db_conn.execute( db_conn.execute(
"INSERT INTO schema_version (version, upgraded)" "INSERT OR REPLACE INTO schema_version (version, upgraded)"
" VALUES (?,?)", " VALUES (?,?)",
(row[0], False) (row[0], False)
) )

View File

@ -17,7 +17,8 @@ CREATE TABLE IF NOT EXISTS schema_version(
Lock char(1) NOT NULL DEFAULT 'X', -- Makes sure this table only has one row. Lock char(1) NOT NULL DEFAULT 'X', -- Makes sure this table only has one row.
version INTEGER NOT NULL, version INTEGER NOT NULL,
upgraded BOOL NOT NULL, -- Whether we reached this version from an upgrade or an initial schema. upgraded BOOL NOT NULL, -- Whether we reached this version from an upgrade or an initial schema.
CONSTRAINT schema_version_lock CHECK (Lock='X') ON CONFLICT REPLACE CONSTRAINT schema_version_lock_x CHECK (Lock='X')
CONSTRAINT schema_version_lock_uniq UNIQUE (Lock)
); );
CREATE TABLE IF NOT EXISTS schema_deltas( CREATE TABLE IF NOT EXISTS schema_deltas(