Come puoi vedere in questo esempio che ho riprodotto, definendo e popolando una tabella come
============================
CREATE TABLE dbo.dbOrdiniTestata
(
ID SMALLINT NOT NULL,
Operatore SMALLINT NULL,
Campo VARCHAR(20) NOT NULL
)
GO
INSERT dbo.dbOrdiniTestata VALUES (1, 1, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (2, 2, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (3, 2, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (4, 1, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (5, 3, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (6, 1, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (7, 4, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (8, 5, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (9, 5, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (10, 3, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (11, 1, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (12, 6, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (13, 7, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (14, 6, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (15, 4, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (16, 8, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (17, 4, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (18, 5, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (19, 7, 'XXXXXXXXX')
INSERT dbo.dbOrdiniTestata VALUES (20, 3, 'XXXXXXXXX')
GO
============================
eseguendo un'istruzione del tipo
UPDATE dbo.dbOrdiniTestata
SET Operatore = NULL
WHERE Operatore = 3
non viene sollevata alcuna eccezione. Un'eccezione viene sollevata nel caso in cui venga utilizzata una sintassi del tipo
UPDATE dbo.dbOrdiniTestata
SET Operatore = (SELECT ID FROM dbo.dbOrdiniTestata WHERE Operatore = 2)
WHERE Operatore = 3
oppure se eseguo
UPDATE dbo.dbOrdiniTestata
SET Operatore = NULL
WHERE Operatore = (SELECT ID FROM dbo.dbOrdiniTestata WHERE Operatore = 2)
in entrambi i casi mi viene restituito il messaggio
Server: Msg 512, Level 16, State 1, Line 3
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
The statement has been terminated.
Lo stesso avviene se nella tabella è definito un trigger che esegue un'istruzione simile a quella di cui sopra. Se sei sicuro che l'istruzione che va in errore sia quella che hai indicato non ti resta che verificare il codice del trigger sull'evento di update della tabella...
Bye