Search code examples
sqlt-sqlsql-server-2008-express

How to use delete cascade in stored procedure?


I just need some in help to implement delete cascade in my stored procedure because I have REFERENCE constraint error

Create PROCEDURE [dbo].[DeleteProject]
    @ProjectID uniqueidentifier
AS
BEGIN
    -- Insert statements for procedure here
    DELETE FROM [TaskManagementSystem_DB].[dbo].[Projects]
    WHERE projectID = @ProjectID
END

Solution

  • You don't implement delete cascade in the proc.

    You either implement delete cascase on the foriegn key constraint itself:

    ALTER TABLE [ChildTable] WITH CHECK ADD CONSTRAINT [FK_ChildTable_Projects] FOREIGN KEY ([ProjectID})
    REFERENCES [Project] ([ProjectID])
    ON DELETE CASCADE
    

    or you need to explicitly delete the child record before you delete the master.

    Create PROCEDURE [dbo].[DeleteProject]
    @ProjectID uniqueidentifier
    AS
    BEGIN
    
    DELETE child
    FROM [TaskManagementSystem_DB].[dbo].[Projects] proj
        JOIN [TaskManagementSystem_DB].[dbo].[ChildTable] child
            ON proj.ProjectID = child.ProjectID
    
    DELETE FROM [TaskManagementSystem_DB].[dbo].[Projects]
        WHERE projectID = @ProjectID
    
    END