如何与另一列成对增加标识列?

How to increment identity column in pair with another column?

假设我想在 SQL Server 2008 R2 中创建一个 table 如下(这可能是错误的,但它有助于说明这一点):

CREATE TABLE BANK_ACCOUNT
        (
            BankID INT NOT NULL,
            RecID INT IDENTITY(1,1) NOT NULL,
            IDValue varchar(100) NOT NULL,
        )  ON [PRIMARY]
GO

ALTER TABLE BANK_ACCOUNT
    ADD CONSTRAINT
                PK_BANK_ACCOUNT PRIMARY KEY CLUSTERED 
                (
                BankID,
                RecID
                ) ON [PRIMARY]

开始 我怎样才能做到这样,每次我将记录插入 table 时,RecID 都会随着 BankID 适当增加。例如:

INSERT (BankID, IDValue) INTO BANK_ACCOUNT VALUES (1, "Val1")
INSERT (BankID, IDValue) INTO BANK_ACCOUNT VALUES (1, "Val2")
INSERT (BankID, IDValue) INTO BANK_ACCOUNT VALUES (2, "Val3")
INSERT (BankID, IDValue) INTO BANK_ACCOUNT VALUES (1, "Val4")

应该产生:

BankID | RecID | IDValue
   1      1        Val1
   1      2        Val2
   2      1        Val3
   1      3        Val4

而是创建一个 View

CREATE TABLE BANK_ACCOUNT
  (
     Iden_Col INT IDENTITY(1, 1) NOT NULL,
     BankID   INT NOT NULL,
     IDValue  VARCHAR(100) NOT NULL,
  )

GO

INSERT INTO BANK_ACCOUNT
VALUES      (1,'Val1')

INSERT INTO BANK_ACCOUNT
VALUES      (1,'Val2')

INSERT INTO BANK_ACCOUNT
VALUES      (2,'Val3')

INSERT INTO BANK_ACCOUNT
VALUES      (1,'Val4')

go

CREATE VIEW BANK_ACCOUNT_View
AS
    SELECT Row_number()
            OVER(
                partition BY BankID
                ORDER BY Iden_Col) RecID,
            BankID,
            IDValue
    FROM   BANK_ACCOUNT 

select * FROM BANK_ACCOUNT_View