Korzystam z następującego kodu, aby sprawdzić, czy istnieje tabela tymczasowa i upuścić tabelę, jeśli istnieje, przed ponownym utworzeniem. Działa dobrze, dopóki nie zmieniam kolumn. Jeśli dodam kolumnę później, wyświetli się komunikat „nieprawidłowa kolumna”. Daj mi znać, co robię źle.
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
. Jeśli transakcja się powiedzie, tabela zostanie usunięta. Jeśli się nie powiedzie, tabela również zniknie (ponieważ została utworzona w ramach transakcji). W każdym razie: Nie trzeba sprawdzać, czy tabela już istnieje.