mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-09-28 04:44:26 +02:00
Fix for last issue relating to #577
This commit is contained in:
parent
842b61321f
commit
374506a7ed
2 changed files with 12 additions and 9 deletions
|
|
@ -876,7 +876,7 @@ class Database:
|
||||||
for fk in foreign_keys:
|
for fk in foreign_keys:
|
||||||
if fk.other_table == name and columns.get(fk.other_column):
|
if fk.other_table == name and columns.get(fk.other_column):
|
||||||
continue
|
continue
|
||||||
if not any(
|
if fk.other_column != "rowid" and not any(
|
||||||
c for c in self[fk.other_table].columns if c.name == fk.other_column
|
c for c in self[fk.other_table].columns if c.name == fk.other_column
|
||||||
):
|
):
|
||||||
raise AlterError(
|
raise AlterError(
|
||||||
|
|
|
||||||
|
|
@ -469,18 +469,21 @@ def test_add_column_foreign_key(fresh_db):
|
||||||
fresh_db.create_table("dogs", {"name": str})
|
fresh_db.create_table("dogs", {"name": str})
|
||||||
fresh_db.create_table("breeds", {"name": str})
|
fresh_db.create_table("breeds", {"name": str})
|
||||||
fresh_db["dogs"].add_column("breed_id", fk="breeds")
|
fresh_db["dogs"].add_column("breed_id", fk="breeds")
|
||||||
assert (
|
assert fresh_db["dogs"].schema == (
|
||||||
"CREATE TABLE [dogs] ( [name] TEXT , [breed_id] INTEGER, FOREIGN KEY([breed_id]) REFERENCES [breeds]([rowid]) )"
|
'CREATE TABLE "dogs" (\n'
|
||||||
== collapse_whitespace(fresh_db["dogs"].schema)
|
" [name] TEXT,\n"
|
||||||
|
" [breed_id] INTEGER REFERENCES [breeds]([rowid])\n"
|
||||||
|
")"
|
||||||
)
|
)
|
||||||
# And again with an explicit primary key column
|
# And again with an explicit primary key column
|
||||||
fresh_db.create_table("subbreeds", {"name": str, "primkey": str}, pk="primkey")
|
fresh_db.create_table("subbreeds", {"name": str, "primkey": str}, pk="primkey")
|
||||||
fresh_db["dogs"].add_column("subbreed_id", fk="subbreeds")
|
fresh_db["dogs"].add_column("subbreed_id", fk="subbreeds")
|
||||||
assert (
|
assert fresh_db["dogs"].schema == (
|
||||||
"CREATE TABLE [dogs] ( [name] TEXT , [breed_id] INTEGER, [subbreed_id] TEXT, "
|
'CREATE TABLE "dogs" (\n'
|
||||||
"FOREIGN KEY([breed_id]) REFERENCES [breeds]([rowid]), "
|
" [name] TEXT,\n"
|
||||||
"FOREIGN KEY([subbreed_id]) REFERENCES [subbreeds]([primkey]) )"
|
" [breed_id] INTEGER REFERENCES [breeds]([rowid]),\n"
|
||||||
== collapse_whitespace(fresh_db["dogs"].schema)
|
" [subbreed_id] TEXT REFERENCES [subbreeds]([primkey])\n"
|
||||||
|
")"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue