Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sqlite数据库模型中的约束和键_Sqlite_Foreign Keys_Constraints_Primary Key_Composite Primary Key - Fatal编程技术网

sqlite数据库模型中的约束和键

sqlite数据库模型中的约束和键,sqlite,foreign-keys,constraints,primary-key,composite-primary-key,Sqlite,Foreign Keys,Constraints,Primary Key,Composite Primary Key,我正在使用Navicat中的建模工具建立一个简单的Sqlite数据库。设置如下所示: Table 1: _employer_ col1: name (PK) ----------- Mcdonalds | NHS London | Police | ----------- Table 2: _jobs_ col1: job_title col2: emp_name (FK - referencing _employer_.name) col3: job_id (PK - aut

我正在使用Navicat中的建模工具建立一个简单的Sqlite数据库。设置如下所示:

Table 1: _employer_ 
col1: name (PK)
-----------
Mcdonalds  | 
NHS London |
Police     |
-----------


Table 2: _jobs_
col1: job_title
col2: emp_name (FK - referencing _employer_.name)
col3: job_id (PK - automatically generated)
----------------------------
Mcdonalds  | Cleaner  | 345 |
McDonalds  | Kitchens | 782 |
Police     | Kitchens | 999 |
NHS London | Nurse    | 123 |
NHS London | Doctor   | 126 | 
NHS London | Cleaner  | 112 |  
----------------------------
我想添加的最后一个约束是(
emp\u name
job\u title
)在
\u jobs
表中,jobs是唯一的,因此,例如,您不能有两个
NHS London | cleaner
条目。但是,当我添加此约束时,Navicat抱怨说当前约束无法实现基数。这种设置有什么问题?。如果有帮助,以下是此模型生成的SQL模式:

CREATE TABLE "_employer_" (
"name" TEXT NOT NULL,
PRIMARY KEY ("name") 
);

CREATE TABLE "_jobs_" (
"job_title" TEXT NOT NULL,
"emp_name" TEXT NOT NULL,
"job_id" INTEGER NOT NULL,
PRIMARY KEY ("job_id") ,
CONSTRAINT "fk__jobs___employer__1" FOREIGN KEY ("emp_name") REFERENCES "_employer_" ("name"),
CONSTRAINT "constrain_job" UNIQUE ("emp_name", "job_title")
);
问题可能归结为使用
外键
(它在自己的表中是
主键
)作为
组合唯一键
的一部分。在我的示例中,
\u employer\u.name
\u employer\u
表中的
主键,是
\u jobs\u
表中的
外键的引用(
\u jobs\u.emp\u name
),最后,这个
emps\u name
字段是
\u作业
表中组合
唯一键
的一部分。理论上讲,这样做有什么问题吗?

您的模式(编辑前和编辑后)在SQLite 3.7.9和3.7.16.2上为我构建时都没有错误。在
pragma foreign_keys=on之后,外键约束按设计工作


如果我处在您的位置,我会使用SQLite命令行而不是Navicat进行测试。我在这里看不到SQLite问题。

错误:外键定义中的未知列“Organization”在删除断开的外键引用后,在3.7.9版中对我来说很好。抱歉,原始架构中存在错误。我已经改正了。还是有同样的问题吗