我有一个Person
表和表Company
。
两个表都有一列Id
(标识)
表公司的Ids为1到165 在表格中,人员有1到1月的Ids
在新版本的系统中,创建了一个表Entity
。
此表包含Companies
和People
Company
和Person
表将维护,引用Entity
表。
Entity
或Company
表
Person
中的ID相同
两个表都与其他表有多个关系。
表Entity
(以及其他表)有一列ID
(标识)。
问题是,当两个表一起时,Id会被重复(这是预期的)。
如何在不失去关系的情况下导入?
我想改变Company
表中的Ids值,从2030年开始。
因此,在加入两个表时,Ids不会重复。
但这会产生另一个问题。
我想仅使用DDL(SQL Server)
执行此操作答案 0 :(得分:0)
如果您对自己的尝试进行了少量修改,请将新列(例如newId
)添加到Company
和Person
以管理与Entity
的关系并离开{{ 1}}列原样。为什么这是最简单的方法?因为新列不应该是一侧的标识列。另一方面,您可以保留与id
和Company
完整相关的其他表格的所有逻辑。
答案 1 :(得分:0)
我想改变公司表中Ids的值,从2030年开始。因此,当加入两个表时,Ids不会重复。
使用ON UPDATE CASCADE在Person表上创建对所有相关表的外键约束(或更改现有的外键约束)。然后更新Person表并更改id列的值 - 这些更改将级联到相关表。
要停止进一步的问题,可以将Person和Company中的标识列分别更改为identity(1000,3)和identity(1001,3)。
但是,我认为最好的办法是在Entity表中使用不同的EntityID列,与PersonID和CompanyID无关。 Entity表还有一个名为AltEntityID或BusinessKey的列,它包含来自另一个表的id,并且没有唯一约束或外键约束。