Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 确保标识列不存在';不允许更改其他值_Sql_Sql Server - Fatal编程技术网

Sql 确保标识列不存在';不允许更改其他值

Sql 确保标识列不存在';不允许更改其他值,sql,sql-server,Sql,Sql Server,我需要一个名为RowId的标识列。但是,我有一个问题,我看到同一RowID的多个实例5-10次,其中customerNumber发生了更改,这是不允许的。例如: RowID: CustomerNumber: 2556892 25231564656522 2556892 25232264686453 如何确保我的表不允许更改CustomerNumber?拥有标识列的目的是在添加值(

我需要一个名为RowId的标识列。但是,我有一个问题,我看到同一RowID的多个实例5-10次,其中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并手动插入重复值。@一个月前,您试图对客户表实施版本控制。当时它没有标识列。如果这是同一个表(或相关表),那么您的版本控制逻辑可能有问题?