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.execute(
"INSERT INTO schema_version (version, upgraded)"
"INSERT OR REPLACE INTO schema_version (version, upgraded)"
" VALUES (?,?)",
(max_current_ver, False)
)
@ -748,7 +748,7 @@ def _upgrade_existing_database(cur, current_version, delta_files, upgraded):
)
cur.execute(
"INSERT INTO schema_version (version, upgraded)"
"INSERT OR REPLACE INTO schema_version (version, upgraded)"
" VALUES (?,?)",
(v, True)
)
@ -803,7 +803,7 @@ def prepare_sqlite3_database(db_conn):
if row and row[0]:
db_conn.execute(
"INSERT INTO schema_version (version, upgraded)"
"INSERT OR REPLACE INTO schema_version (version, upgraded)"
" VALUES (?,?)",
(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.
version INTEGER NOT NULL,
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(