Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Dieguinhu Web

[Resolvido] Criar trigger com vinculos de Campos

Recommended Posts

galera sou programador e estou em um novo serviço onde preciso trabalhar com SQL SERVER e estou muito "CRU" nessa linguagem fazia consultas basicas e agora começou complicar..

 

Preciso da seguinte trigger:

 

 

Tenho duas tabelas modem e simcard ,

 

1) verificar se elas tem vinculos

 

2) se tiver vinculos e elas forem alteradas atribuir o mesmo status nas duas tabelas

 

 

Por exemplo

 

se as duas forem 542

 

SELECT * FROM simcard where SimCardId=542

SELECT * FROM modem where SimCardId=542

 

atualizar o statusid das duas tabelas .. comecei fazendo aqui mas tenho certeza que está errado.. alguem pode me ajudar ?

 

 

CREATE TRIGGER [AtualizaSimCard] ON [dbo].[DBO01]

FOR INSERT, UPDATE

AS

Declare

 

DECLARE @SimCardId INT

DECLARE @StatusId INT

 

BEGIN

 

IF (SELECT SimCardId FROM simcard where SimCardId=@SimCardId) = (SELECT SimCardId FROM modem where SimCardId=@SimCardId)

 

BEGIN

 

UPDATE modem SET statusid = @statusid WHERE simcardid = @SimCardId FROM updated

UPDATE modem SET statusid = @statusid WHERE simcardid = @SimCardId FROM inserted

UPDATE simcard SET statusid = @statusid WHERE simcardid = @SimCardId FROM updated

UPDATE simcard SET statusid = @statusid WHERE simcardid = @SimCardId FROM inserted

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tudo ..

 

 

Reformulei a trigger e vi que tem q ser em cada tabela

 

USE [DBO1]
GO
/****** Object:  Trigger [dbo].[AtualizaSimCard]    Script Date: 07/04/2011 15:29:05 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[AtualizaSimCard]
ON [dbo].[simCard]
FOR INSERT,UPDATE
AS
DECLARE @SimCardId INT
DECLARE @StatusId INT

BEGIN


SELECT @SimCardId = SimCardId FROM inserted
SELECT @SimCardId = SimCardId FROM updated
SELECT @StatusId = StatusId FROM inserted
SELECT @StatusId = StatusId FROM updated


IF(
(SELECT simcardid from simcard where simcardid = @SimCardId) 
= 
(SELECT simcardid from modem where simcardid = @SimCardId)
) 



UPDATE [dbo].[Modem] SET statusid = @StatusId   WHERE simcardid = @SimCardId 
UPDATE [dbo].[simCard] SET statusid = @StatusId WHERE simcardid = @SimCardId 

END

 

 

Ele da erro ao inserir

 

$query = "update simcard set

datacompra = '$_POST[datacompra]', serial='$_POST[serial]', numnotafiscal='$_POST[notafiscal]', IntegradorId = '$_POST[integrador]', NumLinha = '$_POST[numerolinha]', Pin2 = '$_POST[pin2]', TipoSimCardId = '$_POST[tipo]', OperadoraId = '$_POST[operadora]', Observacao = '$_POST[observacoes]', statusid = '$_POST[status]', loginatualizacao = '$user_login', dataultimaatualizacao = GETDATE()

where simcardid = '$simcard_id'";

$resultado = mssql_query($query) or die("Erro ao alterar simcard");

 

 

ao alterar ele da o erro ao alterar simcard o que pode estar errado?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.