确保“身份”列不允许更改其他值

时间:2019-10-11 14:07:21

标签: sql sql-server

我需要一个称为RowId的标识列。但是,我遇到一个问题,即我看到同一RowID的多个实例5-10次,其中customerNumber发生了变化,因此不应该这样做。例如:

  RowID:                   CustomerNumber:
  2556892                  25231564656522
  2556892                  25232264686453

如何确保我的表不允许更改CustomerNumber?具有标识列的目的是在添加值(例如新的CustomerNumber)时具有不同的RowId。不知何故,不是新的CustomerNumber获得新的rowId,而是对其进行了修改,并且他们正在更改CustomerNumber。如何预防?

1 个答案:

答案 0 :(得分:2)

听起来您需要为客户提供一张新桌子:

create table Customers as (
    CustomerId int identity(1, 1) primary key,
    CustomerNumber varchar(20) unique -- or whatever
    -- add more columns about customers
);

Voila!每个CustomerId只有一个CustomerNumber。这适用于外键关系。然后,您可以从当前表中删除CustomerNumber,将rowid重命名为CustomerId(更具描述性),并定义适当的外键关系。