2010-02-22 7 views
0

Pourquoi ne puis-je pas utiliser un Au lieu de Supprimer Déclencheur sur une table qui a une colonne varbinary filestream?Au lieu de Supprimer Trigger avec FileStream

Y a-t-il une solution de contournement?

Je souhaite mettre à jour un champ lorsqu'une commande de suppression est exécutée.

Merci

Répondre

0

Tous les types de déclencheurs INSTEAD OF ne sont généralement pas pris en charge avec des tables FILESTREAM - et DELETE est pas différent dans ce cas. La raison en est probablement qu'il aurait une sémantique très compliquée dans le cas des déclencheurs UPDATE et des mises à jour hors bande (à partir de .Net ou Win32).

Si vous fournissez plus de détails concernant votre scénario, peut-être que quelqu'un pourra vous proposer une solution de contournement.

+0

Je pourrais le réparer avec un déclencheur après suppression. Je viens de faire l'insertion là encore. Thx – k0ni

1

Vous pouvez créer deux tables istead d'un:

CREATE TABLE [dbo].[FileStreams](
    [Id] [int] IDENTITY(1,1) NOT NULL, 
    [RowGuid] [uniqueidentifier] ROWGUIDCOL NOT NULL, 
    [Data] [varbinary](max) FILESTREAM NULL, 
    CONSTRAINT [PK_FileStreams] PRIMARY KEY CLUSTERED 
    (
     [Id] ASC 
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY], 
    UNIQUE NONCLUSTERED 
    (
     [RowGuid] ASC 
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] FILESTREAM_ON [FilestreamGroup] 
GO 

CREATE TABLE [dbo].[Files](
    [Id] [int] IDENTITY(1,1) NOT NULL, 
    [Name] [nvarchar](1024) NULL, 
    [FileStreamId] [int] NOT NULL, 
    CONSTRAINT [PK_Files] PRIMARY KEY CLUSTERED 
    (
     [Id] ASC 
    )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 
GO 

ALTER TABLE [dbo].[Files] WITH CHECK ADD CONSTRAINT [FK_Files_FileStreams] FOREIGN KEY([FileStreamId]) 
REFERENCES [dbo].[FileStreams] ([Id]) 
GO 

ALTER TABLE [dbo].[Files] CHECK CONSTRAINT [FK_Files_FileStreams] 
GO 

clé étrangère doit être NO ACTION. Il vous permet de créer INSTEAD OF trigger pour table Fichiers

Questions connexes