Ho una semplice tabella di test come questa:
CREATE TABLE MyTable (x INT);
All'interno di una transazione, provo ad aggiungere una colonna e quindi inserisco nella colonna appena creata:
BEGIN TRANSACTION;
PRINT 'Adding column, ''SupplementalDividends'', to MyTable table.';
ALTER TABLE MyTable
ADD SupplementalDividends DECIMAL(18,6);
PRINT 'Column added successfully....';
PRINT 'Ready to INSERT into MyTable ...';
INSERT INTO MyTable (x, SupplementalDividends)
VALUES (1, 3.2);
PRINT '**** CHANGES COMPLETE -- COMMITTING.';
COMMIT TRANSACTION;
Il problema è un messaggio di errore quando eseguo il codice sopra:
Invalid column name 'SupplementalDividends'.
Perché questo causa un errore? Se aggiungo la colonna in un batch diverso, al di fuori della transazione, funzionerà. Il mio problema è che voglio aggiungere la colonna all'interno della transazione. Perché l'errore
schema.ObjectName
. Un buon inizio per adattare le buone pratiche :-)