Skocz do zawartości

Subiekt Nexo wersja 4 - problem z polem własnym

Polecane posty

Mam bardzo dziwny problem , mam założone Pola własne na dokumencie sprzedaży kiedy dokonuje zmiany  w polu własnym po zapisie dokumentu  nadal widzę starą wartość.....

zrobiłem również prosty update dla tego dokumentu na bazie i również nie dokonuje się zmiana ?!  Update wykonałem klika razy i nadal nie mogę zmienić wartości.

 

update [ModelDanychContainer].[Dokumenty_PolaWlasneDokumentDS_Adv2]  set S1='brak'  where Id='156824'

Screenshot_14.png

Link to postu

tak jest prosty trigger , a czy w tej wersji używanie triggerów nie jest wskazane ?

 

 


GO
/****** Object:  Trigger [ModelDanychContainer].[Dokumenty_PolaWlasneDokumentDS_Adv2_tri]    Script Date: 13.04.2022 11:51:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [ModelDanychContainer].[Dokumenty_PolaWlasneDokumentDS_Adv2_tri] ON [ModelDanychContainer].[Dokumenty_PolaWlasneDokumentDS_Adv2]
WITH EXECUTE AS CALLER
AFTER INSERT,UPDATE
AS
BEGIN
    update  [Nexo_Ima Polska S,A].[ModelDanychContainer].[Dokumenty_PolaWlasneDokumentDS_Adv2] set  D8=(D0+D1+D2+D3+D4+D5+D6+D7)  
    update [Nexo_Ima Polska S,A].[ModelDanychContainer].[Dokumenty_PolaWlasneDokumentDS_Adv2] set  S1='TAK' where I0>'0'


END
 

Link to postu

Trigger znosi od ręki efekt Pana zmiany - ma Pan wartość I0, większą od 0, więc S1 zmienia się na TAK ;)

14 minut temu, Artur Rut napisał:

tak jest prosty trigger , a czy w tej wersji używanie triggerów nie jest wskazane ?

Zawsze istnieje ryzyko, że wejdzie w konflikt, z bazowym NEXO, więc co do czego, trzeba pamiętać o tym ryzyku. Ja osobiście omijam szerokim łukiem ;)

  • Lubię to 2
Link to postu
39 minut temu, Artur Rut napisał:

Tak jest prosty trigger , a czy w tej wersji używanie triggerów nie jest wskazane ?

Tak na szybko widzę 2 sprawy:

Znowu porównuje Pan int ze stringiem (po co te "uszy").

39 minut temu, Artur Rut napisał:

where I0>'0'

Wystarczy I0 > 0

 

Ale najważniejsze jest coś innego.

Wszystko działa zgodnie z Pańskimi założeniami.

Wpisuje Pan w pole S1 wartość 'brak' a po tym zapisie trigger sprawdza wartość pola I0 jest dodatnia (u Pana = 100102), więc nadpisuje ją wartością 'TAK'.

Powiem więcej!

Za każdym razem kiedy w tabeli Dokumenty_PolaWlasneDokumentDS_Adv2 jest dokonywany zapis ten trigger aktualizuje wszystkie rekordy tabeli 😲

Aktualizując w każdym rekordzie D8, a S1 w rekordach w których I0 > 0.

 

Nie wiem co miał robić ten trigger, ale stawiam dolary przeciwko orzechom że nie to co robi.

Edytowane przez Andrzej Kubik
  • Haha 1
Link to postu
18 minut temu, Artur Rut napisał:

126 rekordów

Dzisiaj jest to 126 rekordów dla dokumentów sprzedaży, a ile będzie jutro? Z doświadczenia wiem, że trzeba zawsze patrzeć w przyszłość i pomnożyć to jeszcze co najmniej przez 10. Serwer, pewnie wytrzyma, ale też z doświadczenia wiem, że takie czasem drobnostki zostawione, mogą potem niepotrzebnie męczyć zapisy, a w dobie dysków SSD, jest to jednak wpływ na jego żywotność. Do tego jeszcze dochodzą działania użytkowników. Albo np. za rok zdecyduje Pan dodać pola własne dla DS i przeleci niepotrzebnie po wszystkie zapisy, ja bym tego nie lekceważył.

 

Ważne, że problem się chyba odnalazł.

 

P.S. Pan naprawdę korzysta z wersji 4, czy jakoś przy dwóch wątkach, się panu 0 ucięło w numerze wersji? ;)

Link to postu
53 minuty temu, Artur Rut napisał:

Trigger wkleiłem tylko poglądowo bez warunków

Skoro widzimy ogryzek kodu to dalsze rozważania na tym triggerem nie mają sensu.

53 minuty temu, Artur Rut napisał:

126 rekordów które wykonuje na bazie to chyba serwer wytrzyma

Jak dla mnie to droga prowadząca do strzału w kolano, a trigger jest źle napisany i tego się będę trzymał, ale to nie mój trigger, nie ja decyduję.

Edytowane przez Andrzej Kubik
Link to postu
×
×
  • Dodaj nową pozycję...