我有一个数据库项目作为我大学的完整学期作业,在我的一个表格中,可以使用以下格式的主键 001SALS201812101自动增量 实际上这个主键定义如下
001 - Branch Code
SALS - TRN Type
2018 - Current Year
122 - days of the year
101 - the auto increment number
任何人都可以告诉我如何制作这样的主键
答案 0 :(得分:0)
这不是我建议在表格中做的事情。而是在依赖于表格的视图中。
让db执行它做得很好的事情,即标准自动递增
integer
作为主键。
如果您需要确保组合的唯一性,只需添加唯一索引/键(SQL Server / MySQL)。
下面是一个使用SQL Server的示例:
create table Sales (
Id int identity primary key
,BranchCode int
,TRNType varchar(25)
,Year int
,DaysOfYear int
);
create unique index ux_sales_key on Sales (BranchCode, TRNType, Year, DaysOfYear);
go
请注意,截至2016年,SQL Server支持computed columns。这也可以解决您的问题以及表格本身。
现在MySQL中的表结构相同
create table Sales (
Id int auto_increment primary key
,BranchCode int
,TRNType varchar(25)
,Year int
,DaysOfYear int
,unique key (BranchCode, TRNType, Year, DaysOfYear)
);
制定你的"复合键"使用类似于以下的视图:
create view vSales
as
select
concat(BranchCode, TRNType, Year, DaysOfYear, Id) as SomeCompositeKey
-- the rest of your cols go here
from
Sales;
go