我必須移植一個PostgreSQL觸發器,但由於我沒有太多經驗,所以我不知道如何更改某些部分。原觸發是:將PostgreSQL觸發器移植到SQL Server 2008中
CREATE TRIGGER aerolinea_tr
AFTER UPDATE
ON public.aerolinea FOR EACH ROW
EXECUTE PROCEDURE public."actualizaWarehoseTemplate"();
DECLARE
mviews RECORD;
BEGIN
IF (TG_OP = 'UPDATE') THEN
FOR mviews IN SELECT DISTINCT template.idtemplate
FROM template
INNER JOIN vueloaerolinea ON (template.idvueloaerolinea = vueloaerolinea.idvueloaerolinea)
WHERE vueloaerolinea.codigolinea = old.codigolinea
LOOP
UPDATE detalletemplate SET idwarehose = new.idwarehouse WHERE detalletemplate.idtemplate = mviews.idtemplate;
END LOOP;
END IF;
RETURN old;
END;
而我所做的是:
CREATE TRIGGER aerolinea_tr
ON aerolinea
AFTER UPDATE
AS
BEGIN
-- if no row affected, the trigger ends.
IF @@ROWCOUNT = 0
BEGIN
RETURN;
END;
IF EXISTS(SELECT * FROM inserted)
BEGIN
IF EXISTS(SELECT * FROM deleted)
BEGIN
--Update code goes here.
END
END
END;
但我找不到一個相當於記錄SQL Server的,我不知道該怎麼做的那部分。
'detalletemplate'的更新如何與調用觸發器的更新相關聯? 「模板」或「vueloaerolinea」與定義觸發器的表相關的方式如何?我的意思是,你似乎沒有在觸發器的主體中引用'public.aerolinea'。我有點想到你的PostgreSQL觸發器的作用,只是試圖找出與觸發器的所有者表的關係。 –