sql-server – DB中用于生成主键的表?

前端之家收集整理的这篇文章主要介绍了sql-server – DB中用于生成主键的表?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
您是否曾使用单独的表来“生成”DB的人工主键(以及为什么)?我的意思是拥有一个包含两列,表名和当前ID的表 – 通过简单地用该表名锁定行,获取键的当前值,增加它,您可以使用该表为某些表获取新的“ID”一个,解锁行.为什么您更喜欢这个超过标准整数标识列?

附: “想法”来自福勒斯企业应用架构模式,顺便说一下……

解决方法

这称为Hi / Lo分配.

你可以这样做,你的表上的INSERT触发器从这个表中获取ID,并在你获得你的ID之前或之后递增它,具体取决于你的选择.

当您必须处理多个数据库引擎时,通常会使用此方法. Oracle中的自动增量标识符是通过SEQUENCE,您可以在数据表的BEFORE INSERT TRIGGER中使用SEQUENCE.NEXTVALUE递增.

相反,sql Server具有IDENTITY列,本机自动增量,这由DBE本身管理.

为了使您的软件能够在两个DBE上工作,您必须达到某种标准,然后用于此的最常见的“标准”是对主键的Hi / Lo分配.

这是一种方法.目前,使用NHM的ORM Mapping工具,它通过配置提供,因此您需要更少的关注应用程序和数据库方面.

编辑#1

因为这种操作不能用于全局范围,所以每个数据库数据库模式都必须有这样的表.这样,每个模式都与另一个模式无关.但是,一个模式中的数据不能使用相同的密钥隐式地移向另一个模式,因为它可能与已存在的行冲突.

对于安全模式,它访问与另一个模式或用户相同的数据库,因此特定安全模式不应存在其他表.

原文链接:https://www.f2er.com/mssql/78332.html

猜你在找的MsSQL相关文章