自动递增复合主键

时间:2017-11-16 18:47:41

标签: sql database ms-access database-design composite-primary-key

我有一个我想要创建的Access数据库。我想使用表中的两列来创建主键。

Projectbl (ProjectID, ProjectRegion, other columns)

我希望ProjectID自动增量。没关系。到目前为止,每当我添加一个新项目时,ProjecID都会自行增加。

我想在同一个表格中创建一个新列,该列将是ProjectRef,其中新号码将是ProjectIDProjectRegion的组合。

所以例如

ProjectID ProjectRegion OtherCol 
---------------------------------
1            500          ...
2            100          ...
3            200          ...
4            500          ...
5            500          ...
6            100          ...

我希望桌子看起来像那样

ProjectRef ProjectID ProjectRegion OtherCol 
--------------------------------------------
5001        1            500          ...
1002        2            100          ...
2003        3            200          ...
5004        4            500          ...
5005        5            500          ...
1006        6            100          ...

所以我想添加一个新项目:projectID会自动增加到7,但ProjectRef将是'ProjectReg'7无论ProjectReg是什么。

我知道我可以用

创建一个复合键
CREATE TABLE 'Projectbl'
(
     ProjectID INT(10) NOT NULL AUTO_INCREMENT,
     ProjectRegion INT(10) NOT NULL,
     other columns VARCHAR(100),

     CONSTRAINT ProjectRef 
         PRIMARY KEY ('ProjectRegion', 'ProjectID')
)

如何在表格中实际显示ProjectRef

1 个答案:

答案 0 :(得分:3)

您根本不应该有ProjectRef列。这违反了数据库规范化的基本规则。如果您希望前端显示ProjectRef,那么只需从您拥有的列中进行计算即可。