Ich habe eine Tabelle mit Tausenden von Zeilen. Da die Tabelle ursprünglich nicht mit der Spalte created_at erstellt wurde, gibt es keine Möglichkeit, ihren Erstellungszeitstempel zu erhalten. Es ist jedoch wichtig, die Zeitstempel für zukünftige Reihen zu erhalten.
Gibt es eine Möglichkeit, eine Zeitstempel-Spalte mit dem Standardwert JETZT () hinzuzufügen, damit die Werte nicht für die vorherigen Zeilen, sondern nur für die zukünftigen Zeilen aufgefüllt werden?
Wenn ich die ALTER
-Abfrage durchführe, werden alle Zeilen mit einem Zeitstempel gefüllt:
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()
Sie müssen die Spalte mit dem Standardwert null
hinzufügen und dann die Spalte ändern, um den Standardwert now()
zu erhalten.
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP;
ALTER TABLE mytable ALTER COLUMN created_at SET DEFAULT now();
Sie können die Standardregel mit der Alterstabelle hinzufügen.
ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()
setzen Sie dann sofort alle vorhandenen Zeilen auf null:
UPDATE mytable SET created_at = NULL
Ab diesem Zeitpunkt wird die DEFAULT
wirksam.
Versuchen Sie etwas wie: -
ALTER TABLE table_name ADD CONSTRAINT [DF_table_name_Created]
DEFAULT (getdate()) FOR [created_at];
ersetzen Sie table_name
durch den Namen Ihrer Tabelle.