我有一个简单的测试表,如下所示:
CREATE TABLE MyTable (x INT);
Run Code Online (Sandbox Code Playgroud)
在事务中,我尝试添加一列,然后插入到新创建的列中:
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;
Run Code Online (Sandbox Code Playgroud)
当我运行上面的代码时,问题是一条错误消息:
Invalid column name 'SupplementalDividends'.
Run Code Online (Sandbox Code Playgroud)
为什么这会导致错误?如果我在交易之外的不同批次中添加该列,它将起作用。我的问题是我想在事务中添加列。为什么会出错?