2011-01-31 2 views
1

열이있는 Person 테이블이 있습니다. Status. 코드를 따르는 것은 내가if 문 내부에 alter table 쿼리를 작성합니다.

if not exists(select 1 from sysobjects, syscolumns where sysobjects.id = syscolumns.id and sysobjects.name = 'Person' and syscolumns.name = 'Status') 

begin 

    print "Inside the if statement" 

end 


go 

이 잘 작동하고 아무것도 테이블 둘 다 존재하는 컬럼으로 인쇄되지 않습니다 실행하려고되는 SQLT 파일에 존재합니다. 내가

if not exists(select 1 from sysobjects, syscolumns where sysobjects.id = syscolumns.id and sysobjects.name = 'Person' and syscolumns.name = 'Status') 
begin 
    print "Inside the if statement" 
    alter table Person 
    add Status char(5) DEFAULT 'INVLD' NOT NULL 
end 

go 

이 작동하지 않습니다 다음에 파일을 변경하고 난 오류 메시지가 다음받을 경우

메시지 2705, 수준 16, 상태 3

서버 'NEXUS' Line 6

각 테이블의 열 이름은 고유해야합니다. 테이블의 열 이름 'Status' 'Person'이 두 번 이상 지정되었습니다.

이 코드의 내용은 왜 내부에 들어 있습니까? 이것에 대한 해결책은 무엇입니까?

+0

당신이 지적한 링크는 SQL 용입니다. 나는 sybase와 함께 일하고있다. 그리고 나는 그것이 작동하게 할 수있는 지점에 도달했으나 특별한 경우에는 작동하지 않는다. – Sam

답변

3

나는이 답변을 찾고 있지 않다는 것을 알고 있지만, 여기에 있습니다.

이유는 구조 변경이 일반적인 업그레이드의 일부입니다. 주어진 프로젝트에서 업그레이드는 항상 그렇듯이 두 번 이상 발생하며 일반적으로 두 개 이상의 테이블에 둘 이상의 열이 포함됩니다. 따라서 구조를 수정하고 특정 열을 사용하는 비즈니스 논리와 별도로 해당 문제를 처리하는 도구를 만들거나 사용합니다.