我有两个表要合并在一起。它们都有相同的列。但是,我要复制的记录由另一个表引用。
因此,当我更新对新表的引用时,引用不再正确。我该如何更新参考文献以使它们保持正确?
编辑 - 道歉 - 更多细节:
目前我有这个:
INSERT INTO Suppliers
(Name, Reference, Telephone, Email, ContactName, AddressId, CommentSetId)
SELECT Name, Reference, Telephone, Email, ContactName, AddressId, CommentSetId
FROM Hotels
我想删除“酒店”表,但需要确保将记录复制到“供应商”表后,另一个表“HotelContract”的引用仍然正确
编辑2 - 这是SQL Server 2005。
我有一张“HotelContract”表,其中有外键“HotelId”。我已将此更新为“SupplierId”,以便在将酒店复制到“供应商”表格时使用。
答案 0 :(得分:2)
如果您在酒店和供应商(例如姓名)中有另一个唯一密钥,您可以使用此密钥更新HotelContract中的SupplierId(首先将外键约束删除到酒店)。您可以通过HotelContracts,酒店和供应商之间的联接来实现这一目标:
update HotelContract
set SupplierId = S.SupplierId
from HotelContract C
inner join
Hotels H
on H.HotelId = C.SupplierId -- assuming the pk column in Hotels is HotelId
inner join
Suppliers S
on S.Name = H.Name -- assuming Name is unique in both tables
如果您没有这样一个唯一的密钥,您必须在供应商的临时栏中存储原始的HotelId(现在是SupplierId)。在这种情况下,HotelContract的更新很简单。
之后恢复HotelContract的外键。