Hello,
What are the difference between "FOR update" trigger and
"AFTER Update" Triggers?
The reason I am asking is because I cannot figure out how
to solve the below problems.
-- DDL
Create Trigger dbo.tr_modifyDate_Child_i ON dbo.Child
For Update AS
BEGIN
UPDATE Child
SET modifyDate = GetDate()
WHERE ParentId in (SELECT ParentId FROM INSERTED)
AND ChildId in (SELECT ChildId FROM INSERTED)
END
Create Trigger dbo.tr_modifyDate_Child_i ON dbo.Child
For Insert AS
BEGIN
UPDATE Child
SET CreateDate = GetDate()
WHERE ParentId in (SELECT ParentId FROM INSERTED)
AND ChildId in (SELECT ChildId FROM INSERTED)
END
--drop table [dbo].[CHILD]
GO
CREATE TABLE [dbo].[CHILD] (
[ParentID] [int] NOT NULL ,
[ChildID] [int] NOT NULL ,
[FirstName] [varchar] (50) NOT NULL ,
[LastName] [varchar] (50) NOT NULL ,
[ModifyDate] [datetime] NOT NULL ,
[CreateDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CHILD] WITH NOCHECK ADD
CONSTRAINT [PK_CHILD] PRIMARY KEY CLUSTERED
(
[ParentID],
[ChildID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CHILD] ADD
CONSTRAINT [DF_CHILD_ChildID] DEFAULT (0) FOR
[ChildID]
GO
--These triggers work fine, until I implement this:
CREATE Trigger dbo.tr_ChildID_Child_i ON dbo.Child --
drop trigger tr_RequestID_Request_i
FOR Insert AS
BEGIN
UPDATE Child
SET ChildID = (Select max(ChildID) from Child as mV
where mV.ParentID = Request.ParentID
) + 1
From Child Inner Join Inserted
On Child.ParentID = Inserted.ParentID
Where Child.ChildID = 0
END
--Thanks.