>CREATE TRIGGER ABC01_FEATURES_BD
>ON ABC01_VT_FEATURES
>INSTEAD OF DELETE
>AS
> DELETE ABC01_FEATURES
> WHERE ( FEATURE_ID, COMPANY_ID, SITE_ID) IN
>(SELECT FEATURE_ID, COMPANY_ID, SITE_ID, FROM DELETED
>)
>
>
>mi dice che c'è un errore negli elementi della where....non è
>possibile impostare una 'in' nel modo da me fatto sopra????
Ciao scandian,
no, l'operatore IN permette di confrontare una espressione con una subquery che restituisce una sola colonna oppure una lista di valori.
Nel caso in cui tu debba confrontare più colonne puoi ricorrere ad una INNER JOIN oppure all'operatore EXISTS:
CREATE TRIGGER ABC01_FEATURES_BD
ON ABC01_VT_FEATURES
INSTEAD OF DELETE
AS
DELETE ABC01_FEATURES
FROM ABC01_FEATURES AS A
JOIN DELETED D
ON A.FEATURE_ID = D.FEATURE_ID
AND A.COMPANY_ID = D.COMPANY_ID
AND A.SITE_ID = D.SITE_ID;
CREATE TRIGGER ABC01_FEATURES_BD
ON ABC01_VT_FEATURES
INSTEAD OF DELETE
AS
DELETE ABC01_FEATURES
FROM ABC01_FEATURES AS A
WHERE EXISTS(
SELECT *
FROM DELETED D
WHERE D.FEATURE_ID = A.FEATURE_ID
AND D.COMPANY_ID = A.COMPANY_ID
AND D.SITE_ID = A.SITE_ID
);
Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org