TRIGGER

GUILHERMEMFA 10/04/2012 16:39:18
#399499
Boa tarde pessoal!

Estou trabalhando com o SQL Server 2008.
Nele tenho 2 BANCOS:
- O BANCO01 eh do meu sistema;
- O BANCO02 eh do sistema de outra empresa.

No BANCO01 tenho uma tabela de FUNCIONARIOS e no BANCO02 tambem tem uma tabela de FUNCIONARIOS (os mesmos funcionarios nos 2 bancos).
Preciso de uma TRIGGER que quando for alterado o status do funcionário no BANCO02 altere também o status no BANCO01

Alguém pode me ajudar?
Grato
GUILHERMEMFA 11/04/2012 14:12:35
#399594
Boa tarde pessoal!
Consegui resolver uma parte. Porém ainda preciso de ajuda
Olhem só os teste que realizei:

Primeiro criei 2 tabelas (TBTESTE e TBTESTE2)
as duas com a seguinte estrutura:


COLUNA TIPO TAMANHO

ID INT 4
DESCRICAO VARCHAR 50
STATUS CHAR 1

Depois insiro dados identicos nas duas:

ID DESCRICAO STATUS

1 TESTE1 A
2 TESTE2 A
3 TESTE3 A

Depois rodo essa TRIGGER que eu criei:

[txt-color=#007100]Create trigger
TRIGGERTESTE
on
TBTESTE for update as
if (select count (*) from deleted) <> 0
Update A set A.status = B.STATUS
FROM
TBTESTE2 as A
Inner join
TBTESTE as B
on
A.ID=B.ID
Where
A.STATUS != B.STATUS
print [ô]DADOS ATUALIZADOS[ô]
[/txt-color]

Em seguida rodo um intrução de atualização de registros como segue abaixo:

[txt-color=#007100]Update TBTESTE set status = [ô]D[ô] where ID = 2[/txt-color]


Funciona perfeitamente. Quando altero o status de algum registro da TBTESTE automaticamente altera na TBTESTE2.
Porém, as duas tabelas estão no mesmo banco
Como faço isso estando as duas tabelas em bancos diferentes

FLIMA 11/04/2012 17:51:37
#399629
Primeiro você tem que garantir que o BANCO01 tem permissão de UPDATE em BANCO02.TBTESTE2.

Depois é só arrumar sua trigger, passando também o owner:

...
FROM
BANCO02.TBTESTE2 as A
Inner join
...


Boa sorte,
FLIMA.
GUILHERMEMFA 12/04/2012 08:18:19
#399663
Pessoal dei uma pesquisada em alguns sites e consegui resolver meu problema da forma que segue abaixo

Citação:

Create trigger
TRIGGERTESTE
on
dbo.TBTESTE3 for update as
if (select count (*) from deleted) <> 0
Update B set B.status = A.STATUS
FROM
dbo.TBTESTE3 as A
Inner join
BANCO2.dbo.TBTESTE as B
on
A.ID=B.ID
Where
A.STATUS != B.STATUS
print [ô]DADOS ATUALIZADOS[ô]



é lógico que eu tenho q ter permissão no banco.
Grato pela atenção
Tópico encerrado , respostas não são mais permitidas