datenbankseitige Berechnung

Effie

Benutzer
Beiträge
13
Guten Morgen,
ich soll in MS SQL Berechnungen in der Datenbank durchführen.
SOBALD Wert a und Wert b in der Datenbank gespeichert werden, soll Wert C in der Datenbank berechnet werden.
Kann mir jemand weiterhelfen?
liebe grüße
Effie
 
Werbung:
Hi,

einen Trigger halte ich hier für zu extrem. Man kann in Tabellen berechnete Spalten anlegen, die aus Werten der eigenen Zeile feste neue Werte berechnen.
Dafür brauchts keinen Trigger. Hier mal ein einfaches Beispiel bei der Tabellenanlage:

Code:
CREATE dbo.Tabelle1
     (     Nr int IDENTITY(1,1),
           A int,
           B in,
           C as A + B
     )

Viele Grüße,
Tommi
 
Danke für die Hilfe,

das Problem ist, dass ich mit Entity Framework arbeite und meine tabellen automatisch generiert wurden. Wie kann ich jetzt im nachhinein sagen, das c nicht (nur) ein integer sonder a+b sein soll?

lg
 
Kannst du nicht über SQL Studio die Spalte mit ALTER TABLE DROP und ADD erst löschen und dann neu hinzufügen? Oder mag dein Framework keine manuellen Datenbankanpassungen?
 
Jaaaaa :) hat sehr gut funktioniert! Danke!!!

Ahem... Nur hab ich noch eine frage ... Wie regel ich das wenn c in einer anderen Tabelle gespeichert werden soll ?
 
Dann musst du einen Trigger verwenden. Hier bietet sich aber auch an, die andere Tabelle (falls schon vorhanden) durch eine View zu erweitern, die diese Spalte berechnet.
 
Schon wieder Schwierigkeiten :(
Also in Tabelle 'Base' sollen werte a,b,c,d gespeichert werden:

a = b+c
(Das klappt auch soweit)
Aber wenn ich jetzt veruche :

d= a+b+c
Dann bekomme ich folgene Fehlermeldung: "Computed column 'a' in table 'Base' is not allowed to be used in another computed-column definition.

Kann mir jemand helfen?
 
Schon wieder Schwierigkeiten :(
Also in Tabelle 'Base' sollen werte a,b,c,d gespeichert werden:

a = b+c
(Das klappt auch soweit)
Aber wenn ich jetzt veruche :

d= a+b+c
Dann bekomme ich folgene Fehlermeldung: "Computed column 'a' in table 'Base' is not allowed to be used in another computed-column definition.

Kann mir jemand helfen?

Ich denke mal, du mußt das dann nur umschreiben, also da a=b+c ist ist dann d=b+c+b+c oder 2*(b+c).

Davon abgesehen ist das dann alles hochgradig redundant, also ich würde das SO NICHT machen.



Andreas
 
Ok,.. das war ein blödes Beispiel.
a = b+c
d= a +x+y

Dann bekomme ich folgene Fehlermeldung: "Computed column 'a' in table 'Base' is not allowed to be used in another computed-column definition.
Ich kann also das Ergebnis meiner berechneten Spalte 'a' nicht für eine weitere berechnete Spalte verwenden?
Wie kann ich das umgehen?
 
Ok,.. das war ein blödes Beispiel.
a = b+c
d= a +x+y

Dann bekomme ich folgene Fehlermeldung: "Computed column 'a' in table 'Base' is not allowed to be used in another computed-column definition.
Ich kann also das Ergebnis meiner berechneten Spalte 'a' nicht für eine weitere berechnete Spalte verwenden?
Wie kann ich das umgehen?

Im Prinzip wie eben erklärt: statt der Spalte a, die ja berechnet ist, die Berechnungsformel für diese Spalte angeben. Also b+c+x+y.

Andreas
 
Lesen hilft auch enorm weiter, da steht doch fast wörtlich: Eine berechnete Spalte kann nicht in einer anderen berechneten Spalte verwendet werden.
 
Ja, das hab ich wohl auch gelesen, deswegen die Frage ob ich das umgehen kann.:)

Und Andreas, vielen Dank das funktioniert soweit :)
 
Werbung:
Theoretisch ja, praktisch weiß ich auch nicht genau wie sie umgesetzt sind. Eine View kannst du auch in einer anderen View abfragen (zumindest unter MSSQL), also scheinen hier Unterschiede zu existieren.
 
Zurück
Oben