Mam mam następujący problem: chce zrobić trigera na tabeli CDN.prodtechnologia który nie pozwoli na zmianę domyślnej technologii jeśli jakiekolwiek ZP na produkt z tą technologią jest w tym momencie rozpoczęte.
Napisałem coś takiego:
Kod: Zaznacz cały
create TRIGGER cdn.technologiadomyslna
ON CDN.prodtechnologia
for update
AS
SET NOCOUNT ON
begin
if ( (select top 1 PPC_Technologia from
cdn.prodprocesy join
cdn.ProdCzynnosci on PPC_Id=PCZ_Proces join
cdn.ProdZlecenia on PZL_Id=PPC_Zlecenie
where PZL_DataZamkniecia = 0 and PCZ_Realizuje <> 0 and PPC_Technologia = (
select
PTE_Id
from deleted) )
is not null )
begin
RAISERROR('#CDN_INFO/#
#CDN_1=Brak praw do dodawania zleceń! /#
#CDN_2=Sprawdź kontrahenta włączając filtry oraz kontrahentów archiwalnych. /#' , 16,1)
ROLLBACK TRAN
SET NOCOUNT OFF
RETURN
end
end
Po próbie zmiany technologii z aplikacji krzyczy następującym błędem :
Błąd wewnętrzny procedury ExecSQL-2.
Błąd wykonania zapytania (90): Z podzapytania została zwrócona więcej niż 1 wartość. Jest to niedozwolone, jeśli podzapytanie następuje po znaku =, !=, <, <= , > lub >= albo gdy jest używane jako wyrażenie.
update cdn.ProdTechnologia set PTE_Wersja = xxxxx where PTE_Wersja = xxxxx
i nie wiem jak to obejść.