Вы можете использовать CONTEXT_INFO
и Triggers
для обновления таблицы в базе данных B, если данные были изменены в DatabaseA
DECLARE @ID int,@CONTEXT_INFO varbinary(128)
SET @ID = 10
SET @CONTEXT_INFO =cast('ID='+CONVERT(varchar(10),@ID)
+REPLICATE(' ',128) as varbinary(128))
SET CONTEXT_INFO @CONTEXT_INFO
--do Update/Delete of DatabaseA that will fire the trigger
SET CONTEXT_INFO 0x0
здесь часть триггера для извлечения значения:
Create Trigger UpdDel
on TableA --TableA of DatabaseA
Instead of Update,Delete
as
Begin
Begin Try
DECLARE @ID int
,@sCONTEXT_INFO varchar(128)
SELECT @sCONTEXT_INFO=CAST(CONTEXT_INFO() AS VARCHAR)
FROM master.dbo.SYSPROCESSES WHERE [email protected]@SPID
IF Substring(RTRIM(@sCONTEXT_INFO),1,LEN(RTRIM(@sCONTEXT_INFO))) like '%ID%'
BEGIN
SET @ID=Substring(RTRIM(@sCONTEXT_INFO),LEN(RTRIM(@sCONTEXT_INFO)),1)
END
ELSE
BEGIN
RAISERROR('ID was not specified',16,1)
ROLLBACK TRAN
RETURN
END
Insert into DatabaseB.dbo.TableA(col1,col2,col3,col4,col5)
Select col1,col2,col3,col4,col5 from DatabaseA.dbo.TableA where [email protected]
/* Do Your Action for DatabaseA table here */
End Try
Begin Catch
Declare @ErrMsg Nvarchar(max),@Errseverity int
Set @ErrMsg=ERROR_MESSAGE()
Set @Errseverity=ERROR_SEVERITY()
Raiserror(@ErrMsg,@Errseverity,1)
End Catch
End
Выше триггера только для одной таблицы Создание триггеров, как указано выше, для других таблиц также
Вопрос для ms SQL – radar