Onur ERYILMAZ Ответов: 1

Вопрос о триггерах 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

1 Ответов

Рейтинг:
1

Onur ERYILMAZ

У меня уже есть каскад при включенной опции удаления. Моя проблема заключается в получении значения столбца из таблицы 1 при удалении.