sql srvr 2008 триггер вставки для связанной таблицы? - PullRequest
1 голос
/ 30 июня 2011

У меня есть следующая схема:

[DBO]. [Tbl_Events]

[Event_ID] [uniqueidentifier] NOT NULL (PK)
[Location_ID] [uniqueidentifier] NULL (FK)
[Observation] [nvarchar]

[DBO]. [Tbl_Locations]

[Event_ID] [uniqueidentifier] NOT NULL
[Location_ID] [uniqueidentifier] NULL (PK)
[Notes] [nvarchar]

Locations - это родительская таблица со связью с событиями через Location ID.

Location_ID устанавливается как NewID () при создании в Locations, а Event_ID устанавливается как NewID () при создании в событиях. Формат таблицы, отношения и PK не подлежит изменению из-за политики организации, регулирующей репликацию.

Я ищу совет о том, как определить триггер вставки, который создаст новую строку в событиях, с location_id, извлеченным из родительской таблицы местоположений, и новым уникальным event_id. Например, когда (внешним приложением без возможности встраивания sql-кода) создается новая запись местоположения, он получает location_id, равный 8170daed-92c8-47f1-98ca-147800329686, и триггер создает новую запись события также с location_ID, равным 8170daed-92c8-47f1-98ca-147800329686 и event_ID cfed8fe8-b5be-4f78-b366-008672e39637.

1 Ответ

1 голос
/ 14 сентября 2011

Я собираюсь предположить, что ваше определение схемы dbo.tbl_Locations просто typo'd, и Location_ID не равен NULL, а Event_ID равен NULL (поскольку Location_ID является PK и автоматически генерируется).

Вы создадите триггер после вставки в tbl_Locations, который вставляет новые записи в tbl_Events, а затем извлекает этот Event_ID для обновления таблицы tbl_Locations.

create trigger trLocationsInsert on dbo.tbl_Locations after insert as

insert into dbo.tbl_Events (Location_ID) select Location_ID from inserted

update l
set Event_ID = e.Event_ID
from inserted i
inner join dbo.tbl_Locations l on i.Location_ID = l.Location_ID
inner join dbo.tbl_Events e on l.Location_ID = e.Location_ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...