sql - 确保身份列不允许更改另一个值
问题描述
我有一个称为 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
);
瞧!CustomerId
您每人只有一个CustomerNumber
。这适用于外键关系。然后,您可以CustomerNumber
从当前表中删除,重命名rowid
为CustomerId
(更具描述性),并定义适当的外键关系。
推荐阅读
- c# - 在 wpf 中,我可以使用 SHDocVw 打开 InternetExplorer 以访问 HTMLDocument。需要进行 Microsoft Edge 迁移
- javascript - html输入框最小值和十进制值
- firebase - 测试 Firebase 的“https.onCall”函数
- windows - 玩完第一轮游戏就崩溃了,我怎样才能让它正常运行?
- php - 如何添加仅出现在 WooCommerce 商店页面上的小部件
- java - Java JaCoCo 覆盖率报告中的部分覆盖率
- java - Swagger API 规范 - 自定义 API 响应属性 usign @ApiPropertyModel
- firebase - Firebase 在 Flutter Web 上无法运行,但在 android 模拟器上运行良好
- c++ - 使用 boost 计算天数。在 linux 版本 boost 1.74 上工作得很好,但在 MacOS 版本 boost 1.76 中给了我错误
- python - Django 大型查询集作为响应有效返回