Nur aktuelles date / Uhrzeit bei der SQL server-Einfügung zulassen

Ich brauche einen path, um einen einzigen Wert nur innerhalb eines eingefügten Feldes zu erzwingen, genauer ein DateTime-Feld, das immer auf das aktuelle date / die Uhrzeit beim Einfügen gesetzt werden soll. Ich arbeite an einer universitären Übung und sie wollen alle Einschränkungen innerhalb der DB getan werden, gewöhnlich würde ich einfach eine DEFAULT GetDate () anwenden und immer DEFAULT auf Einsätzen verwenden, aber die Übungsanforderungen verhindern dies. Jetzt für eine ganze Zahl kann ich das tun (ich habe die anderen Felder weggelassen, da sie für das Problem irrelevant sind):

CREATE TABLE tester( d INTEGER not null DEFAULT 3, CONSTRAINT chkd CHECK(d = 3) ); 

Doch was ich will, ist folgendes:

 CREATE TABLE tester( d DATETIME not null DEFAULT GETDATE(), CONSTRAINT chkd CHECK(d = ????????) ); 

Re-iterating GetDate () in der Prüfung () wird einen Fehler auf Einfügungen auslösen, da die Mikrosekunden eine Fehlanpassung verursachen. Also ich denke, die erste Frage ist, ist das möglich? und wenn ja (ich hoffe so) wie?

Verfolgen Sie nicht das date / die Uhrzeit in der tester . Stattdessen haben Sie eine separate Tabelle mit einer Spalte, die auf die ID der tester Tabelle als Fremdschlüssel-Einschränkung verweist. Die neue Tabelle hat eine weitere Spalte, eine DateTime Spalte. Beim Einfügen in die tester Tabelle kann ein Trigger ausgetriggers werden, der eine Zeile in die neue Tabelle mit der ID der neu erstellten tester sowie das aktuelle date / die Uhrzeit tester .

Basierend auf Ryans Kommentar zu dieser Antwort, die funktioniert

 CREATE TRIGGER trigger_date ON [dbo].[tester] FOR INSERT AS BEGIN UPDATE tester SET d = GETDATE() WHERE id IN (SELECT id FROM INSERTED); END GO