【发布时间】:2016-02-17 16:15:14
【问题描述】:
我想从两个不同的列和 IDENTITY 创建一个复杂的主键。例如:
我的桌子:
create table Location (
locationID int primary key,
lat int not null,
lng int not null,
)
lat = 43
lng = 567
我希望主键值如下所示:
locationID = 43.567-1
如果已经存在以“43.567”开头的 locationID,则将添加“-1”。
有可能吗?
【问题讨论】:
-
我认为您应该重新考虑您的数据库架构。如果您的
lat/long确实是复合主键,为什么还要使用locationID?为什么要拥有多个具有相同纬度/经度的位置 ID?这没有任何意义。 lat/long 不应该是int和locationID如果你也强制填充它,它就不再是identity。 -
感谢您的参考,但我在这里写的只是一个例子。这个想法是为了以后使用组合键的方式,以便以不同的方式理解和使用它。
-
在主键/候选键中编码信息是个坏主意。搜索回复smart/intelligent keys。
-
什么意思,你能做到吗?是的,你可以让价值观是这样的。 (虽然这是个坏主意。)你的意思不是这样吗?
-
坏主意。要么使用复合主键,要么严格自动生成。记住主键和索引是有区别的
标签: sql database-design primary-key composite-primary-key