Problem med cascade delete, og "Præ delete Trigger" ønskes
jeg har to tabeller med en indbyrdes relation scriptet til tabellerne er her:**********
CREATE TABLE [dbo].[_test2] (
[ID] [uniqueidentifier] NOT NULL ,
[Number] [int] NOT NULL ,
[Name] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Price] [float] NOT NULL ,
[Shop] [uniqueidentifier] NOT NULL
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[produt_relation_test] (
[ID] uniqueidentifier ROWGUIDCOL NOT NULL ,
[shoprelation] [uniqueidentifier] NOT NULL ,
[Accesoryrelation] [uniqueidentifier] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[_test2] ADD
CONSTRAINT [PK__test2] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[produt_relation_test] ADD
CONSTRAINT [DF_produt_relation_test_ID] DEFAULT (newid()) FOR [ID],
CONSTRAINT [PK_produt_relation_test] PRIMARY KEY CLUSTERED
(
[ID]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[produt_relation_test] ADD
CONSTRAINT [FK_produt_relation_test__test2] FOREIGN KEY
(
[shoprelation]
) REFERENCES [dbo].[_test2] (
[ID]
) ON DELETE CASCADE ,
CONSTRAINT [FK_produt_relation_test__test21] FOREIGN KEY
(
[Accesoryrelation]
) REFERENCES [dbo].[_test2] (
[ID]
)
GO
**********
Mit problem består i at både accesoryid samt shopid er fremmednøgle i tabellen test. Men jeg kan kun lave cascade delete på den ene af de to constraints. Hvordan løser jeg problemet så jeg får slettet alle rækker hvor accesoryid er id fra test og alle rækker hvor shopid er id fra test, så jeg efterfølgende kan slette rækken i test.
Jeg har prøvet med triggers, men det kan ikke lade sig gøre, da de bliver eksekveret efter rækken i test bliver slettet, og sletningen fejler fordi der er constraintproblemer.
Jeg ønsker ikke at have min oprydningskode liggende i en storedprocedure, da der kan komme flere stored procedure til, som skal kunne tilføje, eller slette fra denne og andre tabeller, og helst ikke vil ha redundant kode. Er der nogen om kan løse problemet for mig?
Hilse Herman
