Frage von Marcel1605, 22

Selbst updatendes Feld in MSSQL?

Kann man in einer MSSQL oder allgemein in ner DB ein Feld in einer Tabelle einfügen, zum Beispiel 'verstrichene Zeit seit Download', was sich dann selbst updatet, wenn 2 Tage in 3 Tage umspringt?

Oder brauch ich da einen Updateprozess, der das ganze berechnet und wenn nötig überschreibt?

lg

Antwort
von Unsinkable2, 3

Ja, das geht. Es nennt sich Trigger.

Allerdings ist "Datenbank" dumm wie 10 Meter Feldweg, weil ihr einziger Job das Aufbewahren und schnelle Wiederfinden von Daten ist. Du müsstest ihr schon erklären, wie genau du dir das Update des "Feldes in der Tabelle"  vorstellst. Ganz "vollautomatisch" i.S.v. "Denke dir doch selbst aus, wie du das machst." geht es also nie. (Dazu gibt es einfach zu viele verschiedene Möglichkeiten, unterschiedlichste Daten aufzubewahren und zu aktualisieren.)

Aber du kannst ihr durchaus sagen: "Liebe Datenbank, immer, wenn ich eine Anfrage an dich stelle (oder, weniger sinnvoll, aber bei vielen DBMS möglich: Immer, wenn ich dich, beispielsweise durch einen Timer, anstoße), prüfe doch bitte vorher das 'Feld in der Tabelle' und aktualisiere es um die verstrichenen Tage, bevor du mir das Ergebnis meiner Anfrage zurückgibst."

Es ist also ein "vollautomatischer Updateprozess", der völlig transparent im Hintergrund abläuft; und den du bei Abfragen nicht bemerkst. Damit hättest du das gewünschte Ergebnis erreicht...

Antwort
von wotan38, 3

Das macht eigentlich keinen Sinn, ein Datenfeld in der Datenbank, das sich selbst verändert. Wenn Du sagen würdest, wozu Du das brauchst, könnte ich Dir dafür sicher bessere Lösungen anbieten. Wenn Du wissen willst, wieviel Zeit seit dem Download verstrichen ist, bräuchest nur die Downloadzeit von der aktuellen Zeit abziehen. Dazu müsstest nur einmalig die Downloadzeit speichern.

Die Sache mit dem Trigger ist auch keine typische Datenbanklösung. Es mag sicher ungewöhnliche Anwendungen geben, wo ein Trigger sinnvoll sein kann.

Antwort
von happyfish2, 6

Sowas macht keinen Sinn. Speichere einfach den Zeitpunkt des Downloads und berechne die vergangene Zeit bei der Abfrage bzw. Ausgabe.


Antwort
von Ntvz4, 8

Sowas geht meines Wissens nach nicht. Das musst du selbst updaten.

Keine passende Antwort gefunden?

Fragen Sie die Community