Ich verwende den folgenden Code, um zu überprüfen, ob die temporäre Tabelle vorhanden ist, und die Tabelle zu löschen, falls sie vorhanden ist, bevor ich sie erneut erstelle. Es funktioniert gut, solange ich die Spalten nicht ändere. Wenn ich später eine Spalte hinzufüge, wird der Fehler "ungültige Spalte" angezeigt. Bitte lassen Sie mich wissen, was ich falsch mache.
IF OBJECT_ID('tempdb..#Results') IS NOT NULL
DROP TABLE #Results
CREATE TABLE #Results
(
Company CHAR(3),
StepId TINYINT,
FieldId TINYINT,
)
select company, stepid, fieldid from #Results
--Works fine to this point
IF OBJECT_ID('tempdb..#Results') IS NOT NULL
DROP TABLE #Results
CREATE TABLE #Results
(
Company CHAR(3),
StepId TINYINT,
FieldId TINYINT,
NewColumn NVARCHAR(50)
)
select company, stepid, fieldid, NewColumn from #Results
--Does not work
BEGIN TRANSACTION; CREATE TABLE #Results; ...; DROP TABLE #Results; COMMIT
. Wenn die Transaktion erfolgreich ist, wird die Tabelle entfernt. Wenn dies fehlschlägt, wird auch die Tabelle gelöscht (da sie innerhalb der Transaktion erstellt wurde). In jedem Fall: Sie müssen nicht überprüfen, ob die Tabelle bereits vorhanden ist.