2015-03-11 3 views
0

У меня есть таблица [dbo].[main], состоящий из 4-х колонок:Попытка создать триггер для таблицы

  • MovieGenre
  • MusicGenre
  • PodcastGenre
  • CombinedColumn

Я хочу создать триггер, если в MovieGenre, PodcastGenre, MusicGenre вставлено что-либо, вставляется в CombinedColumn.

CREATE TRIGGER trgAfterInsert ON [dbo].[Main] 
FOR INSERT 
AS 
??? 
GO 
+0

MySQL или SQL Server? – dario

+0

Синтаксис не является mysql. –

+0

Прошу прощения, я хотел sql-сервер. –

ответ

0

--dbo.main` необходим ключевой столбец (скажем, его столбец идентичности 'id1') CREATE TRIGGER trgAfterInsert ON [DBO]. [Main] ВСТАВКА AS объявить @allcols VARCHAR (500)

  declare @key1 int 

     set @key1 = ident_current('dbo.main') 

     select @allcols = MovieGenre+' '+ PodcastGenre+' '+ MusicGenre from inserted 

update dbo.main set CombindedColumn= @allcols where id1 = @key1 
+0

Во-первых, спасибо за ваш ответ. Я не хочу комбинированный столбец быть concatination из других 3 колонки, например: Комбинированная колонна должна быть «штабелирования» значения: так было бы: Combinedcolumn: Movie1 Pod1 Music1 вместо: Movie1 + Pod1 + Music1 –

0

Хорошо, это добавит значения в комбинированную колонку один за другим. «Stacking» их, как вы хотите:

CREATE TRIGGER trgAfterInsert on dbo.main 
AFTER INSERT 
AS 
    INSERT INTO yourTable(CombinedColumn) 
    SELECT MovieGenre 
    FROM inserted 
    UNION ALL 
    SELECT PodcastGenre 
    FROM inserted 
    UNION ALL 
    SELECT MusicGenre 
    FROM inserted 
GO 
+0

Во-первых, спасибо за ваш ответ. Я не хочу комбинированный столбец быть concatination из других 3 колонки, например: Комбинированная колонна должна быть «штабелирования» значения: так было бы: Combinedcolumn: Movie1 Pod1 Music1 вместо: Movie1 + Pod1 + Music1 –

+0

А, я вижу. В какой таблице CombinedColumn? – Stephan

+0

marc_s прав (мой триггер не нужен) - используйте вычисленный столбец. Если вы обновляете другую таблицу, вам нужен только триггер. –