【发布时间】:2020-09-17 16:29:39
【问题描述】:
我想创建两个表之间的关系,这是我的表结构
表 1:
ID INT PrimaryKey AUTO_INCREMENT,
CountryCode INT UNIQUE,
Division VARCHAR(4) UNIQUE,
SubDivision VARCHAR(10) UNIQUE
表2:
ID INT PrimaryKey AUTO_INCREMENT,
CountryCode INT UNIQUE,
Division VARCHAR(4) UNIQUE,
ReportNo VARCHAR(10) UNIQUE
表 1:
ID |CountryCode |Division |SubDivision
-------+------------------+--------------+-----------
1 |IDN |A |A-1
2 |IDN |B |B-1
3 |IDN |B |B-2
表2
ID |CountryCode |Division |ReportNo
-------+------------------+--------------+-----------
1 |IDN |A |Re001
2 |IDN |A |Re002
3 |IDN |B |Re003
我想在table2 (CountryCode, Division) 引用table1 (CountryCode, Division) 的那两个表之间创建关系。
所以当我想在table1中删除CountryCode = IDN和Division = A时,当table2包含CountryCode = IDN和Division = A时SQL会提示错误。
我曾尝试在这两个表之间创建关系,但 SQL Server 总是抛出此错误:
表 'table1' 中的列与现有的主键或唯一约束不匹配
谁能指导我如何在这两个表之间建立关系?
提前致谢
【问题讨论】:
-
AUTO_INCREMENT不是 SQL Server 语法。你使用 MySQL 吗?你的设计在很多地方看起来也有问题。可能您应该为每个国家、部门和细分部门提供一个表,并分别使用“更高”表的外键。然后在报表的表格中只使用外键进行细分。 -
感谢您的指正和建议。我会尝试重建我的数据库设计。 (Y) :D
-
如果你在你的 table1 上的 CountryCode 和 Division 列上创建一个 uniq 索引就可以,但是如果你可以使用 GMB 的解决方案会更好
标签: sql sql-server tsql database-design foreign-keys