Sql 确保标识列不存在';不允许更改其他值
我需要一个名为RowId的标识列。但是,我有一个问题,我看到同一RowID的多个实例5-10次,其中customerNumber发生了更改,这是不允许的。例如:Sql 确保标识列不存在';不允许更改其他值,sql,sql-server,Sql,Sql Server,我需要一个名为RowId的标识列。但是,我有一个问题,我看到同一RowID的多个实例5-10次,其中customerNumber发生了更改,这是不允许的。例如: RowID: CustomerNumber: 2556892 25231564656522 2556892 25232264686453 如何确保我的表不允许更改CustomerNumber?拥有标识列的目的是在添加值(
RowID: CustomerNumber:
2556892 25231564656522
2556892 25232264686453
如何确保我的表不允许更改CustomerNumber?拥有标识列的目的是在添加值(如新的CustomerNumber)时拥有不同的RowId。不知何故,新的CustomerNumber没有得到新的rowId,而是被修改了,他们正在更改CustomerNumber。如何防止这种情况发生?听起来您需要为客户提供一个新表:
create table Customers as (
CustomerId int identity(1, 1) primary key,
CustomerNumber varchar(20) unique -- or whatever
-- add more columns about customers
);
瞧!每个
CustomerNumber
只有一个CustomerId
。这适用于外键关系。然后,您可以从当前表中删除CustomerNumber
,将rowid
重命名为CustomerId
(更具描述性),并定义适当的外键关系。听起来您需要为客户创建一个新表:
create table Customers as (
CustomerId int identity(1, 1) primary key,
CustomerNumber varchar(20) unique -- or whatever
-- add more columns about customers
);
瞧!每个
CustomerNumber
只有一个CustomerId
。这适用于外键关系。然后可以从当前表中删除CustomerNumber
,将rowid
重命名为CustomerId
(更具描述性),并定义适当的外键关系。我很难相信rowid列在数据库中真的设置为identity。你能再检查一下吗?定义的标识列不能具有相同的值。我猜identity属性没有设置为true。在identity列中获得重复项的唯一方法是禁用可能覆盖它的任何唯一约束/主键,要将IDENTITY INSERT
设置为ON并手动插入重复值。@一个月前,您试图对客户表实施版本控制。当时它没有标识列。如果这是同一个表(或相关表),可能是您的版本控制逻辑有问题?我发现很难相信数据库中的RowID列真的设置为identity。你能再检查一下吗?定义的标识列不能具有相同的值。我猜identity属性没有设置为true。在identity列中获得重复项的唯一方法是禁用可能覆盖它的任何唯一约束/主键,要将IDENTITY INSERT
设置为ON并手动插入重复值。@一个月前,您试图对客户表实施版本控制。当时它没有标识列。如果这是同一个表(或相关表),那么您的版本控制逻辑可能有问题?