在一个表里创建两个及以上主键再创建别的表将前一个表里的主键引用做后一个表里的外键时 显示无法找到前一个表里相应的主键创建不成
但只设置一个主键时就没有问题
选取一个主键,其他列设置为唯一约束(UNIQUE)即可
CREATE TABLE table1 (
id1 INT PRIMARY KEY, -- 选取 id1 作为主键
id2 INT UNIQUE -- id2 设置唯一约束
)
CREATE TABLE table2 (
ref_id INT REFERENCES table1(id1) -- 外键引用 table1 的主键 id1
)
或者使用复合主键(主键由两个或多个列组合而成)
CREATE TABLE table1 (
id1 INT,
id2 INT,
CONSTRAINT PK_id PRIMARY KEY (id1, id2) -- 复合主键(id1, id2)
)
CREATE TABLE table2 (
id1 INT,
id2 INT,
CONSTRAINT FK_id FOREIGN KEY (id1, id2) REFERENCES table1(id1, id2)
)
望采纳
如果你设置2个字段作为联合主键
那么外键也得是2个字段一一映射
不能外表一个字段去关联主表的2个字段
指关系数据库的参照完整性,是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。
1、实体完整性:指关系的主键约束primary key,主键不能取空值,唯一;比如学生表的主键通常是取学号为主键
2、参照完整性:指参照关系中每个元素的外码要么为空,要么等于被参照关系中某个元素的主码
3、用户定义的完整性:指对关系中每个属性的取值作一个约束的具体定义。比如 性别属性只能取男或女“