AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TRIGGER - Probleme mit: old. new.
Thema durchsuchen
Ansicht
Themen-Optionen

TRIGGER - Probleme mit: old. new.

Ein Thema von spacewolf · begonnen am 2. Jan 2010 · letzter Beitrag vom 2. Jan 2010
Antwort Antwort
Benutzerbild von spacewolf
spacewolf

Registriert seit: 24. Apr 2003
Ort: Magdeburg
218 Beiträge
 
Delphi 7 Professional
 
#1

TRIGGER - Probleme mit: old. new.

  Alt 2. Jan 2010, 17:52
Datenbank: Firebird • Version: 2.5 (64 Bit) • Zugriff über: IBX
Moin,

- kann mir jemand sagen was an "old." - beim Trigger dat Problem ist?

SQL-Code:
CREATE TRIGGER KASSENBUCH_BI0 FOR KASSENBUCH
ACTIVE BEFORE INSERT POSITION 0
AS
begin
  new.saldo = [b]old.[/b]saldo - new.soll + new.haben;
end
Laut Doku sollte man per "old.[column]" auf ein den vorherigen Datensatz beim eingefügten drauf zu greifen.

lg der

Andreas

PS: Ich möchte einfach nur ein simples Kassenbuch mit einem Trigger automatisieren. So das, dass Saldo sich immer autom. mit berechnet.
Andreas Göllner
("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
"Ich kann Dir nur die Tür zeigen, durchgehen musst Du ganz allein."
Wer ist die Tür? Jesus!
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#2

Re: TRIGGER - Probleme mit: old. new.

  Alt 2. Jan 2010, 17:54
Hi!

Gibt es eine Fehlermeldung?
Hast du es mal mit OLD versucht?

Edit:
Moment mal - das ist doch ein insert-trigger, oder?
Was soll es denn da für ein old geben?
Sollte es nicht eher ein Update-Trigger sein?


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von spacewolf
spacewolf

Registriert seit: 24. Apr 2003
Ort: Magdeburg
218 Beiträge
 
Delphi 7 Professional
 
#3

Re: TRIGGER - Probleme mit: old. new.

  Alt 2. Jan 2010, 18:16
achso - bei Insert-Triggern geht das nicht?

hmm ... da geht mir ein Licht auf

das heißt ich muss das über eine stored proc machen...

na da kuck ich ma (war .OLD - die Formatierung hatte versagt)

Ahja Fehlermeldung:
Zitat:
Column unknown.
OLD.SALDO.
der Andreas
Andreas Göllner
("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
"Ich kann Dir nur die Tür zeigen, durchgehen musst Du ganz allein."
Wer ist die Tür? Jesus!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TRIGGER - Probleme mit: old. new.

  Alt 2. Jan 2010, 18:19
Beim Insert halt nicht, da es hier ja keinen alten Wert gibt. Ist aber auch bei einer SP nicht anders, auch hier gibt es keinen alten Wert.
Zudem sollte man den salso nicht als Wert in die Tabelle schreiben, sondern beim Auslesen dynamisch ermitteln
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#5

Re: TRIGGER - Probleme mit: old. new.

  Alt 2. Jan 2010, 18:20
Hi!

Also von meinem Verständnis her, ist es so, dass sich OLD und NEW ja auf eine Zeile / Tupel beziehen. Und beim Update hast du ja dann z.B. die Daten des alten Eintrages.

Die Frage, die sich mir stellt:
Wie sieht denn dein Tabellenlayout aus?


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von spacewolf
spacewolf

Registriert seit: 24. Apr 2003
Ort: Magdeburg
218 Beiträge
 
Delphi 7 Professional
 
#6

Re: TRIGGER - Probleme mit: old. new.

  Alt 2. Jan 2010, 18:28
Die Stored-Proecdure ermittelt hat was einen Datensatz vorher drin stand... also über die vorherigen Max.ID...

Nachfolgend die Tabelle zum Verständnis:

SQL-Code:
CREATE TABLE KASSENBUCH (
    ID INTEGER NOT NULL,
    DATUM TIMESTAMP DEFAULT '01.01.1900',
    HABEN NUMERIC(15,2) DEFAULT 0,
    SOLL NUMERIC(15,2) DEFAULT 0,
    SALDO NUMERIC(15,2) DEFAULT 0,
    MWST SMALLINT DEFAULT 0,
    FREITEXT VARCHAR(512) DEFAULT ''
);

lg Andreas
Andreas Göllner
("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
"Ich kann Dir nur die Tür zeigen, durchgehen musst Du ganz allein."
Wer ist die Tür? Jesus!
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#7

Re: TRIGGER - Probleme mit: old. new.

  Alt 2. Jan 2010, 18:34
Hi!

Sehen dann Einträge z.B. so aus (gekürzt auf das wesentliche):

Code:
ID | Haben | Soll | Saldo
 1 | 100   |  0   | 100 
 2 |   0   | 10   |  90

Falls ja, solltest du das überdenken, weil du redundante Informationen speicherst, deren "Wartbarkeit" eher gering ist.


Grüße, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Benutzerbild von spacewolf
spacewolf

Registriert seit: 24. Apr 2003
Ort: Magdeburg
218 Beiträge
 
Delphi 7 Professional
 
#8

Re: TRIGGER - Probleme mit: old. new.

  Alt 2. Jan 2010, 18:39
Ja, Kassenbücher schreiben das eigendlich so vor. Und da mal ne giesenmenge gespeichert kostet das rechenleistung bzw. zeit - so gesehen - kenn ich das eigendlich nicht anders...

oder wie würdest Du das machen?
Andreas Göllner
("`-''-/").___..--''"`-._
`6_ 6 ) `-. ( ).`-.__.`)
"Ich kann Dir nur die Tür zeigen, durchgehen musst Du ganz allein."
Wer ist die Tür? Jesus!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: TRIGGER - Probleme mit: old. new.

  Alt 2. Jan 2010, 18:45
Ich würde den Saldo in der Abfrage ermitteln

SQL-Code:
select
    Sum(Soll) - Soll(Haben) as Saldo
from
    Kassenbuch;
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz