Costrutto in

mercoledì 19 aprile 2006 - 09.15

scandian Profilo | Newbie

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????

lbenaglia Profilo | Guru

>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
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5