这是我的SQLite表结构
CREATE TABLE tbl_district (
districtId INTEGER PRIMARY KEY not null,
districtName TEXT unique NOT NULL
);
CREATE TABLE tbl_route (
routeId INTEGER,
districtId INTEGER NOT NULL REFERENCES tbl_district (districtId) ON DELETE CASCADE ON UPDATE CASCADE,
routeName TEXT NOT NULL,
primary key (routeId , districtId)
);
CREATE TABLE tbl_city (
cityId INTEGER PRIMARY KEY,
routeId INTEGER NOT NULL REFERENCES tbl_route (routeId) ON DELETE CASCADE ON UPDATE CASCADE,
cityName TEXT NOT NULL
);
如果我执行
insert into tbl_district ( districtId, districtName) values (1,'Sri Lanka')
它可以正常工作
但如果我执行
replace into tbl_district ( districtId, districtName) values (1,'Sri Lanka')
它出现以下错误
Error while executing query: foreign key mismatch - "tbl_city" referencing "tbl_route"
有什么想法解决这个问题吗?
提前致谢!
答案 0 :(得分:2)
父键列必须共同使用UNIQUE约束或具有UNIQUE索引。
routeId
列是tbl_city
中外键的父键,但没有UNIQUE约束。
(您的REPLACE语句与此没有直接关系;它恰好在数据库发生时发现错误。)