Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Aktuelles Datum und Uhrzeit in einer Gespeicherten Prozedur einbauen?

Empfohlene Antworten

Veröffentlicht

Hallo Leute!

Könnte mir bitte einer weiterhelfen?

Es handelt sich um eine SQL-SErver 2008 R2 Datenbank

Ich habe eine Tabelle mit folgenden Spalten (darunter sind die Datentypen):

ID, UserID, KategorieID, Datum, Zeit

int, int, int, date, time(7)

Die Spalte ID ist der Primärschlüssel.

Ich habe folgendes Problem:

Ich möchte div. Gespeicherte Prozeduren für die Tabelle erstellen und möchte sobald ich die Gespeicherten Prozeduren aufrufe, dass dann automatisch das aktuelle Datum und die aktuelle Uhrzeit in die dafür vorgesehen Felder geschrieben werden.

Ich habe es schon so probiert für die Gesp.Proz. New

CREATE PROC spAktionNew

@UserID int,

@KatID int,

@Datum date = GetDate()

@Zeit time = GetDate()

Aber da kamen immer wieder Fehler!

Könntet Ihr mir bitte sagen, wie ich die Gesp.Prozedur schreiben muss?

Das wäre sehr nett von euch!

Geh mal ins Management Studio und schau dir an, was SELECT GetDate() ausgibt. Das könnte dir eine Idee vermitteln in welche Richtung es gehen könnte.

Google-Suche "t-sql getdate" -> erster Treffer -> GETDATE (Transact-SQL)

Aber da kamen immer wieder Fehler!

Auch danach kann man suchen ;)

Warum eine Prozedur? Wenn Du protokollieren willst, wann sich der Datensatz zuletzt geändert hat würde man bei einem On-Update bzw On-Create das Feld direkt via Trigger setzen

...

Es handelt sich um eine SQL-SErver 2008 R2 Datenbank

Ab dem Sql Server 2008 gibt es die Möglichkeit mittels Change data capture Änderungen an Daten nachzuverfolgen.

Möglicherweise findest du in dem Bereich eine Lösung zu deinem Problem.

Der Trigger wird auch funktionieren.

Die mögliche Lösung ist abhängig von den Anforderungen die du hast/bekommen hast.

Trigger sind ja auch prädestiniert dafür. In Abhängigkeit des DBMS und des Problems was zu lösen ist, gibt es halt mehrere Möglichkeiten. Wir evaluieren gerade Möglichkeiten, wie wir Systemweit "Telemetriedaten" sammeln können. Deswegen viel mir der CDC wieder ein ;)

zum Thema Stored Procedure ....

Wenn du das Datum allgemein auf getdate() setzen möchtest, dann brauchst du das nicht als Parameter der Procedure. Im Endeffekt deklarierst du in deinem Code oben das Datum als Optionalen Parameter, mit dem default Wert getdate().

Afaik würde das auch nicht funktionieren, einen Funktionsaufruf als Default Wert zu hinterlegen. Ich werds heute nicht mehr testen, aber ich zweifle dass das akzeptiert wird. Davon abgesehen kannst du da alles mögliche als Datum übergeben, nur wenn der Parameter nicht im Aufruf übergeben wird, hättest du da getdate().

Was du tun kannst ist :


CREATE PROC spAktionNew

@UserID int,

@KatID int

/*@datum datetime = NULL */

AS 

BEGIN

declare @Datum datetime = GetDate() -- warum 1x date und 1x time ?


/*set @datum = isnull(@datum, getdate()) */

....

END

Auskommentiert wäre wie ich @datum als optionalen Parameter anlegen würde.

Ansonsten hast du von den Vorpostern reichlich alternative Vorschläge Erstellungs / Änderungsdatum zu speichern.

Für eine Allgemeine Lösung würde ich vermutlich (mit fehlt der Hintergrund des Ganzen),zu Triggern tendieren, da kannst du dir z.b. dann auch den SQL User der die Änderung durchgeführt hat wegschreiben.

Gruß

Sven

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.