2009-11-02 6 views
1

SQL Server에서 두 개의 필드가 있습니다. 하나는 기본이고 ID는 (AN_ID)입니다. 그런 다음 다른 이유로 인해 AN_ID가 반영되도록 업데이트해야합니다. 현재 그들은 정확히 같은 값을 가지고 있습니다. 나는 그것이 자동 incremente 만들 순수한 T - SQL 쿼리 (저장 프로 시저가없는 경우) 궁금 해서요. 두 필드를 자동으로 증가시키는 우아한 방법은 무엇입니까?

당신에게 대단히 감사합니다

편집 : 나는 두 필드가 같은 값을 포함 할 수있는 경우에, 당신은 삽입 트리거 또는 SQL의 새로운 계산 된 열을 (사용할 수있는 SQL 서버 2000

답변

3

"올바른"솔루션은 거의 확실하게 트리거를 사용하지만 "저장 프로 시저가 없습니다"라는 제목 아래에있는 경우 두 가지 보존 쿼리를 실행하여 약간의 퍼지를 할 수 있습니다 (전송할 수 있어야 함). 호출 응용 프로그램에서 하나의 쿼리로 - 당신이 SQL Server의 상단에 어떤 환경을 사용하고 있는지 알고 유용합니다.

(매우 대략적으로)

INSERT INTO tbl (col1, col2, col3) values (@col1param, @col2param, @col3param); 
UPDATE tbl SET not_an_id = an_id WHERE an_id = SCOPE_IDENTITY() 
+0

이쪽에 PHP가 있습니다. – 0plus1

+1

@@ SCOPE_IDENTITY가 존재하지 않습니다. 대신 SCOPE_IDENTITY()를 사용하십시오. – MaxiWheat

4

을 강요하고있어 2005).

편집 :이 같은 작동해야합니다.

CREATE TRIGGER MyTable_AI ON MyTable 
AFTER INSERT AS 
    UPDATE MyTable 
    SET OTHER_ID = AN_ID 
    WHERE AN_ID IN (SELECT AN_ID FROM inserted); 
+0

나는 계산 된 열로 갈 것입니다. SELECT를 수행 할 때만 영향을 미칩니다. –

+0

완전히 잊었지만 mssql 2000에 붙어 있습니다 : ( – 0plus1

+1

AFTER INSERT 트리거를 사용하여 AN_ID의 ID 값으로 두 번째 필드를 설정하십시오. –

2

두 번째 열은 수식 AN_ID가있는 계산 열일 수 있습니다.

별칭이 AN_ID 인보기를 만들 수도 있습니다.

관련 문제