Я новичок в SQL Server (Express) и был бы очень признателен за помощь новичку. У меня есть разделенная база данных Access, таблицы которой я перенес в SQL Server. Последняя проблема, которую мне нужно решить, - это создать триггер, который будет обновлять строки данных в одной таблице на основе обновлений / изменений данных в другой таблице. Есть две таблицы, на которых мне нужно создать триггеры, но я предполагаю, что, как только я получу одну правильно, мне просто нужно будет использовать ту же логику для второй.
Суть в том, что данные вводятся в tblData
и tblFamily
, и некоторые столбцы в этих таблицах такие же, как некоторые столбцы в Contacts
(например, имя, адрес, город, штат, почтовый индекс и т. Д.).
Когда новые данные вводятся в одну или обе из двух таблиц, или данные обновляются в одной или обеих из двух таблиц, или данные удаляются в одной или обеих из двух таблиц --- мне нужно, чтобы эти данные были то же самое в tblContacts
.
Я предполагаю, что лучший способ - это сделать триггер, но если есть способ получше, я буду рад научиться.
Пока что у меня есть триггер:
CREATE TRIGGER ContactsTrigger
ON [dbo].[tblData]
FOR UPDATE
AS
INSERT INTO dbo.Contacts (LastName, FirstName, MiddleName,
EmailAddress, HomePhone, MobilePhone,
Address, City, StateProvince, ZIPPostal,
id, ContactIDType)
SELECT
LastName, FirstName, MiddleName,
EmailAddress, HomePhone, MobilePhone,
Address, City, StateProvince, ZipPostal,
ID, ContactIDType
FROM
INSERTED
GO
Кажется, это работает для вставки новой записи, но когда я изменяю данные в существующей записи в tblData
, она просто вставляет новую запись в Contacts
, так что у меня затем появляется повторяющаяся запись разных видов (старое значение и новое значение). Мне это не нужно - мне нужно, чтобы он ОБНОВЛЯЛ запись в таблице Contacts
при изменении данных из той же записи в tblData
, в то же время продолжая вставлять НОВЫЕ записи или удалять записи на основе введенных новых записей или старые записи удалены в tblData
.
Мне кажется очень глупым просить об этом, поскольку я уверен, что это должно быть легкое решение, но я очень новичок в этом и готов выглядеть глупо, чтобы получить небольшую помощь или руководство. = D