2017-02-19 2 views
1

Я создаю триггер в SQL Server 2005, и мне нужна небольшая помощь. У меня есть база данных (ZKAccess) в SQL Server 2005.Я хочу обновить столбец таблицы через триггер, чтобы быть тем же самым обновлением в другой таблице

Эти базы данных имеют разные имена таблиц.

Я хочу, чтобы таблица PersonalInfo (столбцы: Reg, Name, Rank, Address) обновила данные пользователя в таблице USERINFO (столбцы: имя, фамилия, адрес, город), чтобы они были одинаковыми.

Как создать триггер, чтобы каждый раз, когда в базу данных вставлена ​​/ обновлена ​​/ удалена, также автоматически обновляется.

Возможно ли это? Не могли бы вы привести несколько примеров?

ответ

0

В качестве простого примера, это будет синхронизировать обновления с PersonalInfo к USERINFO (я не уверен, каким образом вы хотите, чтобы это работало, поэтому я выбрал один):

CREATE TRIGGER [TR_PersonalInfo_SyncUpdateFields] 
ON [PersonalInfo] 
FOR UPDATE 
AS 
    UPDATE [USERINFO] 
    SET [Name] = inserted.[NAME], 
     [Lastname] = inserted.[Lastname], 
     [Address] = inserted.[Address], 
     [City] = inserted.[City] 
    FROM 
     [USERINFO] 
    INNER JOIN 
     inserted ON [USERINFO].[KeyToPersonalInfoField] = inserted.[KeyToPersonalInfoField] 

Вставки будет похож , Для удалений я бы рекомендовал использовать внешние ключи с каскадными удалениями, но вы также можете использовать триггеры.

+0

Msg 468, уровень 16, состояние 9, процедура TR_PersonalInfo_SyncUpdateFields, строка 5 Не удается разрешить конфликт сортировки между «SQL_Latin1_General_CP1_CI_AS» и «Chinese_PRC_CI_AS» в равном действию. я получил этот тип ошибки –

+0

Эта проблема была разрешена с помощью этого запроса COLLATE DATABASE_DEFAULT. –

+0

спасибо приятелю ... но он не работает. –