Foreign keys for _internal database

Refs #1099 - Datasette now uses compound foreign keys internally,
so it would be great to link them correctly.
This commit is contained in:
Simon Willison 2020-12-22 11:48:54 -08:00
commit 270de6527b

View file

@ -17,7 +17,8 @@ async def init_internal_db(db):
"table_name" TEXT, "table_name" TEXT,
"rootpage" INTEGER, "rootpage" INTEGER,
"sql" TEXT, "sql" TEXT,
PRIMARY KEY (database_name, table_name) PRIMARY KEY (database_name, table_name),
FOREIGN KEY (database_name) REFERENCES databases(database_name)
) )
""", """,
block=True, block=True,
@ -34,7 +35,9 @@ async def init_internal_db(db):
"default_value" TEXT, -- renamed from dflt_value "default_value" TEXT, -- renamed from dflt_value
"is_pk" INTEGER, -- renamed from pk "is_pk" INTEGER, -- renamed from pk
"hidden" INTEGER, "hidden" INTEGER,
PRIMARY KEY (database_name, table_name, name) PRIMARY KEY (database_name, table_name, name),
FOREIGN KEY (database_name) REFERENCES databases(database_name),
FOREIGN KEY (database_name, table_name) REFERENCES tables(database_name, table_name)
) )
""", """,
block=True, block=True,
@ -49,7 +52,9 @@ async def init_internal_db(db):
"unique" INTEGER, "unique" INTEGER,
"origin" TEXT, "origin" TEXT,
"partial" INTEGER, "partial" INTEGER,
PRIMARY KEY (database_name, table_name, name) PRIMARY KEY (database_name, table_name, name),
FOREIGN KEY (database_name) REFERENCES databases(database_name),
FOREIGN KEY (database_name, table_name) REFERENCES tables(database_name, table_name)
) )
""", """,
block=True, block=True,
@ -67,7 +72,9 @@ async def init_internal_db(db):
"on_update" TEXT, "on_update" TEXT,
"on_delete" TEXT, "on_delete" TEXT,
"match" TEXT, "match" TEXT,
PRIMARY KEY (database_name, table_name, id, seq) PRIMARY KEY (database_name, table_name, id, seq),
FOREIGN KEY (database_name) REFERENCES databases(database_name),
FOREIGN KEY (database_name, table_name) REFERENCES tables(database_name, table_name)
) )
""", """,
block=True, block=True,