Ciao a tutti ,
ho perso un paio di ore per un banale errore di distrazione commesso su una query
del tipo riportato in fondo e che non mi ha restituito
alcun errore nonostante la seguente porzione di query
and IdCausale in (select IdCausale from dbo.t2 where UM='G')
sia manifestamente errata perchè il campo IdCausale non appartiene alla tabella dbo.t2
Premesso che non sono interessato a sapere come farla con altri metodi,
mi chiedevo se esiste una qualche opzione per far sollevare un'eccezione al db
oppure sapere se è un bug del dbms a me non noto.
Sul mio pc e con il mio SqlServer ver 2014 mi restituisce i record con IdCausale 1 e 3
use tempdb
go
if OBJECT_ID('dbo.t1') is not null
drop table dbo.t1
GO
if OBJECT_ID('dbo.t2') is not null
drop table dbo.t2
GO
create table dbo.t1 (IdCausale int primary key , DesCausale varchar(200))
insert into dbo.t1 (IdCausale , DesCausale) values(1, 'Causale1' )
insert into dbo.t1 (IdCausale , DesCausale) values(2, 'Causale2' )
insert into dbo.t1 (IdCausale , DesCausale) values(3, 'Causale3' )
create table dbo.t2 (CodCausale int primary key , UM char(1))
insert into dbo.t2 (CodCausale , UM) values(1, 'G' )
insert into dbo.t2 (CodCausale , UM) values(2, 'G' )
insert into dbo.t2 (CodCausale , UM) values(3, 'O' )
select *
from dbo.t1
where IdCausale in (1,3)
-- istruzione errata
and IdCausale in (select IdCausale from dbo.t2 where UM='G')
drop table dbo.t1
drop table dbo.t2