首页 > 解决方案 > 确保身份列不允许更改另一个值

问题描述

我有一个称为 RowId 的标识列,这是必需的。但是,我有一个问题,我看到同一个 RowID 的多个实例 5-10 次,其中 customerNumber 发生了变化,这是不允许的。例如:

  RowID:                   CustomerNumber:
  2556892                  25231564656522
  2556892                  25232264686453

如何确保我的表不允许 CustomerNumber 更改?具有标识列的要点是在添加值(例如新的 CustomerNumber)时具有不同的 RowId。不知何故,而不是新的 CustomerNumber 得到一个新的 rowId,它正在被修改并且他们正在更改 CustomerNumber。如何防止这种情况?

标签: sqlsql-server

解决方案


听起来您需要为客户准备一张新桌子:

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

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


推荐阅读