> >declare @C_ID_BEFORE CHAR(15) >declare @C_ID_AFTE CHAR(15) > >IF UPDATE(unique_fld) > BEGIN > > SELECT @C_ID_BEFORE = unique_fld FROM deleted > SELECT @C_ID_AFTER = unique_fld FROM inserted > > UPDATE PARENT_TBL SET unique_fld = @C_ID_AFTER > WHERE unique_fld = @C_ID_BEFORE > > UPDATE CHILD_TBL SET unique_fld = @C_ID_AFTER > WHERE unique_fld = @C_ID_BEFORE > >END >>
declare @C_ID_BEFORE CHAR(15) declare @C_ID_AFTE CHAR(15) IF UPDATE(unique_fld) BEGIN SELECT @C_ID_BEFORE = unique_fld FROM deleted SELECT @C_ID_AFTER = unique_fld FROM inserted UPDATE PARENT_TBL SET unique_fld = @C_ID_AFTER WHERE unique_fld = @C_ID_BEFORE -- CHILD_TBL.unique_fld = @C_ID_BEFORE is an orphan here! UPDATE CHILD_TBL SET unique_fld = @C_ID_AFTER WHERE unique_fld = @C_ID_BEFORE ENDwith a single row update,
ALTER TABLE CHILD_TBL WITH CHECK ADD CONSTRAINT [FK_CHILD_TBL_PARENT_TBL] FOREIGN KEY(unique_fld) REFERENCES PARENT_TBL (unique_fld) ON UPDATE CASCADE