Вопрос о триггерах SQL server
Привет,
У меня есть две таблицы, как показано ниже,
Таблица1
ID (INT, PK)
Param1 (NVARCHAR (50))
Таблица2
ID (INT, PK)
t1_ID (INT, FK)
Таблица1 подключен к Таблица2 по Таблица1.ИД-Таблица2.t1_ID. И отношения имеют каскад при удалении.
То, что я хочу сделать, - это когда пользователь удаляет строку в Таблице 1, все связанные строки в таблице 2 также удаляются(именно поэтому я открываю каскад при удалении), но я также хочу, чтобы при удалении строк в таблице 2 получался параметр в Таблице 1.
Как я могу это сделать?
Заранее спасибо.
Я думаю, что мне нужно быть более конкретным в том, чего я пытаюсь достичь.
Подумайте о 3 таблицах. Подобный этому; Таблицы
Когда пользователь удаляет платеж в таблице Payments, суммы в таблице PaymentItems, связанные с PaymentID, будут добавлены или вычитаны в столбце Balance таблицы CompanyFinanceInformations по типу PaymentType.
Что я уже пробовал:
CREATE TRIGGER DeleteTrigger ON dbo.Table2 FOR DELETE AS BEGIN DECLARE @Param1 AS NVARCHAR(50) DECLARE @t1_ID AS INT SELECT @t1_ID = t1_ID FROM deleted SELECT @Param1 = Param1 FROM dbo.Table1 WHERE dbo.Table1.ID = @t1_ID -- In here @Param1 always returns NULL END
Я думаю о том, чтобы написать триггер для таблицы 1,и в этом цикле триггера через все ассоциированные строки на Таблице 2. Но у меня есть опасения по поводу производительности и эффективности этого процесса.
Atlapure Ambrish
Я не уверен, что вы пытаетесь сделать в триггере на Таблице 2.
Кроме того, если вы пишете триггер в Таблице 1, Вам не нужно перебирать строки, у вас есть t1_id (FK) в таблице 2, поэтому вы сможете легко удалить все строки с помощью этого FK после того, как получите ID в триггере из удаленной таблицы.
УДАЛИТЬ ИЗ ТАБЛ. 2
Где t1_ID = ID