Вставка триггера SQL - PullRequest
       24

Вставка триггера SQL

0 голосов
/ 22 июня 2010

Как лучше всего настроить триггер, чтобы получать все новые строки в таблице и вставлять их в таблицу рабочей очереди.

Большое спасибо Sp

Ответы [ 3 ]

2 голосов
/ 22 июня 2010

Чтобы ответить на вопрос, который вы задали

CREATE TRIGGER dbo.tr_i_BaseTable 
   ON  dbo.BaseTable 
   AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;

   INSERT INTO WorkTable
   SELECT * FROM INSERTED

END

Однако вместо того, чтобы фактически дублировать строки дважды, вы не можете использовать какой-либо другой атрибут строк для обнаружения «новых», которые следует рассматривать как часть рабочего стола.,Например, идентификатор или добавление «вставленного» поля даты / времени.

Или другой подход - просто начать заново с новой таблицей WorkTable и считать все предыдущие записи архивированными.Вы можете создать (возможно, Секционированное) представление UNION ALL с двумя таблицами для тех запросов, которые должны работать с консолидированным набором.

1 голос
/ 22 июня 2010

С этим триггером:

CREATE TRIGGER InsertIntoWorkingTable
    ON VeryOldHugeDatabaseTable
    INSTEAD OF INSERT 
AS
    insert into WorkingTable (column1, column2, column3...) (
        select column1, column2, column3
            from inserted
    )

Все, что вам нужно сделать, это продолжать вставлять в VeryOldHugeDatabaseTable . Триггер будет вставлен в этот рабочий стол.

Время от времени вы можете просто запустить хранимую процедуру через задание или что-то подобное, чтобы вставить или заархивировать в эту старую таблицу из рабочего стола.

0 голосов
/ 22 июня 2010

Поиск по "триггеру t-sql" возвращает это как первый результат:

Создать триггер

Кроме синтаксиса, вы в значительной степени ответили на свой вопрос. Установите триггер AFTER INSERT и поместите в него оператор вставки.

...