我需要一个称为RowId的标识列。但是,我遇到一个问题,即我看到同一RowID的多个实例5-10次,其中customerNumber发生了变化,因此不应该这样做。例如:
RowID: CustomerNumber:
2556892 25231564656522
2556892 25232264686453
如何确保我的表不允许更改CustomerNumber?具有标识列的目的是在添加值(例如新的CustomerNumber)时具有不同的RowId。不知何故,不是新的CustomerNumber获得新的rowId,而是对其进行了修改,并且他们正在更改CustomerNumber。如何预防?
答案 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
(更具描述性),并定义适当的外键关系。