События SQL Server при вставке
У меня две таблицы в SQL Server. Я хочу поднять событие, когда клиент вставляет любую строку, чтобы скопировать эту строку в другую таблицу с большим количеством столбцов.
Я должен сделать это на SQL Server сразу после вставки. Это возможно? И если это … как?
Мне нужно что-то вроде этого:
CREATE EVENT myevent ON (INSERT ROW?) DO TODO...
Но я не знаю, есть ли какие-либо события для вставки, и я не знаю, куда идет код.
Благодарю.
РЕДАКТИРОВАТЬ:
У меня есть еще одна проблема. Таблицы находятся в разных базах данных. Я пытаюсь реализовать этот триггер:
USE [DB1] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [TRIGGER_NAME] ON [dbo].[TABLE_TRIGGERED] AFTER INSERT AS BEGIN SET NOCOUNT ON; INSERT INTO DB2.[dbo].[FINAL_TABLE] SELECT * FROM INSERTED WHERE COL1= 'Stuff' AND COL2= 'Stuff' AND COL3= ( SELECT MAX(COL3)+1 FROM DB2[dbo].[FINAL_TABLE] ) END
И он не может получить доступ к COL1, COL2 и COL3. Правильно ли мой синтакс?
Используя триггер SQL After Insert , вы можете обработать его. Если это ваш первый раз с триггерами, позаботьтесь о кодировании на основе набора. Если вы пропустите это, на операторах INSERT с несколькими строками вы можете получить неожиданные результаты. Поэтому избегайте использования переменных в триггерном коде, считайте, что всегда устанавливайте на основе таблиц Inserted и Deleted, специально предназначенных для триггеров. Вы можете проверить упомянутый учебник