我有三张桌子和下面的结构相似
CREATE TABLE [dbo].[EmpBasic](
[EmpID] [int] IDENTITY(1,1) NOT NULL Primary Key,
[Name] [varchar](50),
[Address] [varchar](50)
)
CREATE TABLE [dbo].[EmpProject](
[EmpID] [int] NOT NULL primary key, // referencing column with EmpBasic
[EmpProject] [varchar](50) )
CREATE TABLE [dbo].[EmpFull_Temp](
[ObjectID] [int] IDENTITY(1,1) NOT NULL Primary Key,
[T1Name] [varchar](50) ,
[T1Address] [varchar](50) ,
[T1EmpProject] [varchar](50)
)EmpFull_Temp表有带有虚拟对象ID列的记录.我想用这个表中的记录填充前两个表.但是以EmpID作为前两个表之间的引用。
我在存储过程中试过这个..。
Create Table #IDSS (EmpID bigint, objID bigint)
Insert into EmpBasic
output Inserted.EmpID, EmpFull_Temp.ObjectID
into #IDSS
Select T1Name, T1Address from EmpFull_Temp
Where ObjectID < 106
Insert into EmpProject
Select A.EmpID, B.T1EmpProject from #IDSS as A, EmpFull_Temp as B
Where A.ObjID = B.ObjectID但上面说..。多部分标识符"EmpFull_Temp.ObjectID“无法绑定。
你能帮我实现这个..。
编辑:不能保证Name+Address在EmpBasic表中是唯一的
发布于 2010-06-16 21:26:17
在ObjectID表中添加一个EmpBasic列,以方便数据传输,然后在完成时将其删除。假设这是一次操作,如果正在进行中,我不建议添加或删除列。
发布于 2010-06-17 02:41:54
我已经使用Stack Exchange数据资源管理器来研究其他解决方案。目前唯一有希望的是这里。这实际上是@ScotHauder的答案,除了使用带有ObjectID列的临时表和使用IDENTITY_INSERT将生成的EmpId值移动到EmpBasic之外。
如果必须多次执行此操作,则需要将EmpBasic_Temp EmpId IDENTITY的起始值设置为Max(EmpBasic.EmpID)+1。
https://stackoverflow.com/questions/3051230
复制相似问题