I have 3 tables similar to the sctructure below
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)
)
The EmpFull_Temp table has the records with a dummy object ID column… I want to populate the first 2 tables with the records in this table… But with EmpID as a reference between the first 2 tables.
I tried this in a stored procedure…
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
But it says.. The multi-part identifier “EmpFull_Temp.ObjectID” could not be bound.
Could you please help me in achieving this…
Edit : There is no guarantee that [Name]+[Address] would be unique across [EmpBasic] Table
With your EmpProject join table, you probably don’t want the primary key constraint on only the EmpID column
DECLARE @Count int DECLARE @NextEmpID int DECLARE @StartObjectID int DECLARE @EndObjectID int -- range of IDs to transfer (inclusive) SET @StartObjectID = 1 SET @EndObjectID = 105 BEGIN TRAN -- lock tables so IDENT_CURRENT is valid SELECT @Count = COUNT(*) FROM [EmpBasic] WITH (TABLOCKX, HOLDLOCK) SELECT @Count = COUNT(*) FROM [EmpProject] WITH (TABLOCKX, HOLDLOCK) SELECT @NextEmpID = IDENT_CURRENT('EmpBasic') SET IDENTITY_INSERT [EmpBasic] ON INSERT [EmpBasic] ([EmpID], [Name], [Address]) SELECT @NextEmpID + ROW_NUMBER() OVER(ORDER BY ObjectID), [T1Name], [T1Address] FROM [EmpFull_Temp] WHERE [ObjectID] BETWEEN @StartObjectID AND @EndObjectID SET IDENTITY_INSERT [EmpBasic] OFF INSERT [EmpProject]([EmpID], [EmpProject]) SELECT @NextEmpID + ROW_NUMBER() OVER(ORDER BY ObjectID), [T1EmpProject] FROM [EmpFull_Temp] WHERE [ObjectID] BETWEEN @StartObjectID AND @EndObjectID COMMIT TRAN