>

테이블에 새 열을 추가하기 위해 alter table을 시도하고 있는데 테이블의 기존 행을 업데이트하여 최근에 추가 된 열에 값을 추가하고 마지막으로 *를 선택하여 모든 것이 정상인지 확인한 다음 전체 항목을 롤백하십시오.

같은 것

declare @transactionNameA varchar(20);
declare @transactionNameB varchar(20);
select @transactionNameA = 'TransactionA';
select @transactionNameB = 'TransactionB';
begin transaction @transactionNameA
alter table A add Column int;
begin transaction @transactionNameB
update A set Column = 1 where ID=1;
select * from A;
rollback transaction @transactionNameB;
rollback transaction @transactionNameA;

해당 코드를 작성할 때 열이 존재하지 않는다는 오류가 발생합니다

내가 뭘 잘못하고 있니? 시간과 도움을 주셔서 감사합니다.

  • 답변 # 1

    [Column] 때문에 일괄 처리로 나누어야합니다  문이 하나의 배치로 구문 분석되어 새 열을 볼 수 없으므로 오류가 발생하므로 존재하지 않습니다.

    GO 를 사용하여 일괄 처리하면  열이 테이블에 추가되면 다음 번에 새 열을 업데이트하면 성공적으로 완료됩니다.

    전체 예 :

    DROP TABLE #A;
    GO
    CREATE TABLE #A (ID int IDENTITY(1,1), column1 varchar(1))
    GO
    INSERT INTO #A (column1)
    VALUES('a'),('b'),('c')
    GO
    begin transaction
    alter table #A add [Column] int;
    go
    begin transaction
    update #A set [Column] = 1 where ID=1;
    select * from #A;
    rollback transaction;
    GO
    SELECT *
    FROM #A
    
    

관련 자료

  • 이전 mongodb - setprofiling에서 네임 스페이스가 너무 많이 발생합니다
  • 다음 sql server - 설정 오류 - 무단 조작을 시도했습니다