Вместо триггера удаления с помощью FileStream - PullRequest
0 голосов
/ 22 февраля 2010

Почему я не могу использовать вместо удаления Триггер для таблицы, содержащей столбец varbinary filestream?

Есть ли обходной путь для этого?

Я хочу обновить поле при выполнении команды удаления.

Спасибо

Ответы [ 2 ]

1 голос
/ 29 июня 2012

Вы можете создать две таблицы вместо одной:

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

Внешний ключ должен быть NO ACTION. Позволяет создать INSTEAD OF триггер для таблицы Files

0 голосов
/ 23 февраля 2010

Все типы триггеров INSTEAD OF обычно не поддерживаются с таблицами файлового потока - и DELETE в этом случае не отличается. Возможно, причина в том, что у него будет очень сложная семантика в случае триггеров UPDATE и внеполосных обновлений (из .Net или Win32).

Если вы предоставите более подробную информацию о вашем сценарии, возможно, кто-то сможет дать вам обходной путь.

...