如何创建使用两个外键作为联合主键的数据表?
你要创建的Table3是用于关联产品和客户的多对多关联表,标准SQL实现写法如下:
CREATE TABLE Table3 ( -- 字段类型需与Table1的idproduct完全一致 idproduct INT NOT NULL, -- 字段类型需与Table2的idclient完全一致 idclient INT NOT NULL, -- 可按需调整字段类型、长度、非空等约束 des_anything VARCHAR(255), -- 设为复合主键,保证同个产品和客户的关联唯一 PRIMARY KEY (idproduct, idclient), -- 关联Table1的外键约束 FOREIGN KEY (idproduct) REFERENCES Table1(idproduct) ON DELETE CASCADE ON UPDATE CASCADE, -- 关联Table2的外键约束 FOREIGN KEY (idclient) REFERENCES Table2(idclient) ON DELETE CASCADE ON UPDATE CASCADE );
说明:
- 外键约束可以保证写入Table3的
idproduct必须是Table1中已存在的记录,idclient必须是Table2中已存在的记录,避免出现无效关联的脏数据 ON DELETE CASCADE是级联删除配置:如果Table1中某条产品记录被删除,Table3中对应关联的所有记录会自动删除;同理Table2中客户记录被删除也会自动清理关联数据。如果你不需要自动清理,可改为ON DELETE RESTRICT,表示存在关联记录时不允许删除父表的对应数据- 如果你的主键是字符串类型,要注意两张父表主键的字符集、排序规则、长度都要和Table3的对应字段保持完全一致,否则外键会创建失败
内容的提问来源于stack exchange,提问作者Sway the Destroyer 'STD'
相关产品推荐
相关产品推荐

