Fråga : Duplicera entires som ska ändras i lagrat tillvägagångssätt

hi

We har SPS två som är danandedubblettmål som ska skrivas in in i bordläggabussinessorgen, granskar periodacesss som,

columns är:  

Business_ID
ReviewPeriod_ID

Aprrsaiallock.


here för Bussinessorgreviewperiod acess_ID (PK) är två sps TILLVÄGAGÅNGSSÄTTET för



HRBussiness_org_insert

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER för

1) HRBusiness_Org_Insert



- 2) BusinessOrgReviewPeriodAccess_INS [dbo]. (Välj räkningen (businessOrg_id) [HRBusiness_Org_Insert] @parentLFT int för
AS

DECLARE
för
(@Parent_BusinessOrg_ID int för
, nvarchar @BusinessOrg_Name för
(128), @RequestingEmployeeIDint
för
), @parentIndentationen int för
, @newBusOrgIDint

if för
(från businessorg var Name=@BusinessOrg_Name), = 0)
Begin
BÖRJAR TRANSACTION

            -- Mellanlägget bussar Org
VALD @parentLFT = LFT
FRÅN BusinessOrg
VAR BusinessOrg_ID = @Parent_BusinessOrg_ID

VÄLJER @parentIndentationen = Indentation
FRÅN BusinessOrg
VAR BusinessOrg_ID = den UPPDATERINGBusinessOrg
för @Parent_BusinessOrg_ID

UPPSÄTTNINGEN RGHT = RGHT + 2
VAR RGHT > den UPPDATERINGBusinessOrg
för @parentLFT

UPPSÄTTNINGEN LFT = LFT + 2
VAR LFT > MELLANLÄGGET för @ParentLFT

IN I BusinessOrg
(Parent_BusinessOrg_ID, inryckningen, LFT, RGHT, aktivet, ImageFileName,
ImageFilePath, känt, CheckedOut_By, Created_By_EmpID, Created_DateTime)
VALUES
(@Parent_BusinessOrg_ID, @ParentIndentation för
+ 1, @ParentLFT för
+ 1, @ParentLFT för
+ 2,
1, OGILTIG
,
”. /images/”, @BusinessOrg_Name för
, @RequestingEmployeeID för
, @RequestingEmployeeID för
, getDate för
())

OM @@ERROR- > 0
BEGIN
RAISERROR 50001 'sätter in in i TRANSACTION
ÅTERGÅNG -1
END

för ROLLBACK för BusinessOrg table'
FASTSTÄLLD @newBusOrgID =

för IDENT_CURRENT fel som (”BusinessOrg”)            -- Skapa saknade scenariorekord som baseras på MELLANLÄGGET för föräldern org.
IN I @newBusOrgID för BusOrgScenarioXref
(BusinessOrg_ID, Scenario_ID, ReviewPeriod_ID, Created_DateTime, Created_By_EmpID, Updated_DateTime, Updated_By_EmpID)
SELECT
, getdate för
x.Scenario_ID, för
x.ReviewPeriod_ID, för
(), @RequestingEmployeeID för
, getdate för
(), x
WHERE
för @RequestingEmployeeID
FROM
BusOrgScenarioXref för
x.BusinessOrg_ID = @Parent_BusinessOrg_ID
OCH INTE FINNS (
VALD xx.*
FRÅN BusOrgScenarioXref xx
VAR x.Scenario_ID = xx. Scenario_ID
OCH x.ReviewPeriod_ID = xx.ReviewPeriod_ID
OCH xx.BusinessOrg_ID = @newBusOrgID
)

OM att sätta in för @@ERROR- > 0
BEGIN
RAISERROR 50001 'fel in i ROLLBACKEN TRANSACTION
ÅTERGÅNG -1
END

för BusOrgScenarioXref table'
            -- Skapa saknade configrekord som baseras på MELLANLÄGGET för föräldern org.
IN I @newBusOrgID för BusinessOrgConfigOptionXref
(BusinessOrg_ID, ReviewPeriod_ID, ConfigOption_ID, IsSelected, Created_By_EmpID, Created_DateTime,
Updated_By_EmpID, Updated_DateTime)
SELECT
, @RequestingEmployeeID för
x.ReviewPeriod_ID, för
x.ConfigOption_ID, för
x.IsSelected, för
, getdate för
(), @RequestingEmployeeID för
, x
WHERE
för
FROM
BusinessOrgConfigOptionXref för getdate för
() x.BusinessOrg_ID = @Parent_BusinessOrg_ID
OCH INTE FINNS (
VALD xx.*
FRÅN BusinessOrgConfigOptionXref xx
VAR x.ReviewPeriod_ID = xx.ReviewPeriod_ID
OCH x.ConfigOption_ID = xx.ConfigOption_ID
OCH xx.BusinessOrg_ID = @newBusOrgID
)

OM @@ERROR > 0
som BEGIN
RAISERROR 50001 'sätter in in i TRANSACTION
ÅTERGÅNG -1
END
för ROLLBACK för BusinessOrgConfigOptionXref table'

            -- Skapa saknade configrekord som baseras på MELLANLÄGGET för föräldern org.
IN I @newBusOrgID för BusinessOrgReviewPeriodAccess
(BusinessOrg_ID, ReviewPeriod_ID, AppraisalsLocked)
SELECT
,
p.ReviewPeriod_ID, p
WHERE
för
p.AppraisalsLocked
FROM
BusinessOrgReviewPeriodAccess p.BusinessOrg_ID = @Parent_BusinessOrg_ID
OCH INTE FINNS (
VALD pp.*
FRÅN BusinessOrgReviewPeriodAccess pp
VAR p.ReviewPeriod_ID = pp.ReviewPeriod_ID
OCH p.AppraisalsLocked = pp.AppraisalsLocked
OCH pp.BusinessOrg_ID = @newBusOrgID
)
för
OM det @@ERROR- > 0
BEGIN
RAISERROR 50001 'felet som sätter in in i TRANSACTION
ÅTERGÅNG -1
END
för ROLLBACKEN för BusinessOrgReviewPeriodAccess table'

            -- Skapa rekordet för talang planerar berättiganden som baseras på MELLANLÄGGET för parent
IN I @newBusOrgID för BusOrgMngrLvlRoleXref
(BusinessOrg_ID, ManagerLevel_ID, AuthorRole_ID, Created_By_Emp_ID, Created_Datetime,
Updated_By_Emp_ID, Updated_DateTime)
SELECT
, @RequestingEmployeeID för
p.ManagerLevel_ID, för
p.AuthorRole_ID, för
, getdate för
(), @RequestingEmployeeID för
, p
WHERE
för
FROM
BusOrgMngrLvlRoleXref för getdate för
() p.BusinessOrg_ID = @Parent_BusinessOrg_ID
OCH INTE FINNS (
VALD pp.*
FRÅN BusOrgMngrLvlRoleXref pp
VAR p.ManagerLevel_ID = pp.ManagerLevel_ID
OCH p.AuthorRole_ID = pp.AuthorRole_ID
OCH pp.BusinessOrg_ID = @newBusOrgID
)

OM det @@ERROR- > 0
BEGIN
RAISERROR 50001 'felet sätta in in i TRANSACTION
det ÅTERGÅNG -1
END

för ROLLBACK för BusOrgMngrLvlRoleXref table'
MELLANLÄGGET IN I BusOrgMngrLvlRoleSectionXref
(BusOrgMngrLvlRoleXref_ID, Section_ID, IsSelected, ColumnPosition, ordinalen,
Created_By_Emp_ID, Created_DateTime, Updated_By_Emp_ID, Updated_DateTime)
SELECT
c.BusOrgMngrLvlRoleXref_ID, px. Section_ID,
px.IsSelected,
px.ColumnPosition, px för
för
. Ordinalen @RequestingEmployeeID för
, getdate för
(), @RequestingEmployeeID för
, INRE c
för
FROM
BusOrgMngrLvlRoleXref för getdate för
() SAMMANFOGAR BusOrgMngrLvlRoleXref p PÅ p.ManagerLevel_ID = c.ManagerLevel_ID
OCH p.AuthorRole_ID = c.AuthorRole_ID
OCH p.BusinessOrg_ID = @Parent_BusinessOrg_ID
OCH c.BusinessOrg_ID = @newBusOrgID
                  INRE SAMMANFOGA BusOrgMngrLvlRoleSectionXref px PÅ p.BusOrgMngrLvlRoleXref_ID = px.BusOrgMngrLvlRoleXref_ID

, OM det @@ERROR- > 0
BEGIN
RAISERROR 50001 'felet som sätter in in i ROLLBACKEN TRANSACTION
ÅTERGÅNG -1
END

för BusOrgMngrLvlRoleSectionXref table'
, BEGÅR TRANSACTION

            -- Återgånga nya ID.
som VALD @newBusOrgID

End
Else
Begin
väljer -1 som ****** för
GO
/för Businessorg_id
End


2) Bussinessorgreview period_acess



USE [PMTP], anmärker:  StoredProcedure [dbo]. Skriva daterar: [BusinessOrgReviewPeriodAccess_INS] 06/30/2010 12:17: 50 TILLVÄGAGÅNGSSÄTT för ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER [dbo]. [BusinessOrgReviewPeriodAccess_INS]
AS

INSERT IN I @intBusinessOrgID för
SELECT för dbo.BusinessOrgReviewPeriodAccess (BusinessOrg_ID, ReviewPeriod_ID, AppraisalsLocked), ReviewPeriod_ID, för statuskod<> för 0
FROM ReviewPeriod
WHERE br/>


please för
(@intBusinessOrgIDint
för
) för UPCM'< 'l5At mig veta ändringar till över kommen dubblettobjectives
" klar "

Svar : Duplicera entires som ska ändras i lagrat tillvägagångssätt

Jag antar dig önskar att förhindra mellanlägget, om avkrävarekordet finns redan.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
FÖRÄNDRA TILLVÄGAGÅNGSSÄTTET [dbo]. [BusinessOrgReviewPeriodAccess_INS]
(
      @intBusinessOrgID      int
)
SOM

MELLANLÄGG IN I dbo.BusinessOrgReviewPeriodAccess (BusinessOrg_ID, ReviewPeriod_ID, AppraisalsLocked)
VÄLJ @intBusinessOrgID, ReviewPeriod_ID, 0
FRÅN dbo.ReviewPeriod
VAR statuskod <> ”UPCM”,
-- Kontrollera, om den gjorde inte redan existerande
OCH INTE FINNS (
 VÄLJ 1 
 FRÅN dbo.BusinessOrgReviewPeriodAccess
 VAR BusinessOrg_ID = @intBusinessOrgID
 OCH ReviewPeriod_ID =ReviewPeriod_ID
 OCH AppraisalsLocked=0
)
Andra lösningar  
 
programming4us programming4us