子字段中的SQL Server组合键自定义自动增量

时间:2014-06-16 11:27:35

标签: sql sql-server-2012-express

我正在使用SQL Server 2012 Express。我创建了下表

CREATE TABLE [dbo].[logis_location] 
( [loc_id] int identity  NOT NULL 
  , [loc_name] varchar(50)  NOT NULL   )

CREATE TABLE [dbo].[rev_bill] 
( [bill_id] int identity  NOT NULL   ,
  [loc_id] int  NOT NULL   )

ALTER TABLE [dbo].[rev_bill] 
ADD CONSTRAINT [rev_bill_PK] PRIMARY KEY CLUSTERED ( [bill_id] , [loc_id] )

ALTER TABLE [dbo].[rev_bill] WITH CHECK 
ADD CONSTRAINT [logis_location_rev_bill_FK1] 
FOREIGN KEY ( [loc_id] )

bill_id是自动递增的,但是bill表具有基于位置表loc_id的复合键,它是外键。 这导致以下输出

   bill_id  loc_id
    1        1
    2        1
    3        2
    4        2
    5        1
    6        3
    7        2

然而预期的结果是

   bill_id  loc_id
    1        1
    2        1
    1        2
    2        2
    3        1
    1        3
    3        2

我想以最安全的方式增加特定位置的bill_id。这意味着在插入新账单时,应该增加账单ID,但考虑到loc_id。如上所述,如果有给定位置的账单(例如: loc_id = 4),该位置的第一个账单应该有bill_id 1,下一个应该是2.这是客户要求。  请给我一些指导。

0 个答案:

没有答案