2013-01-21 3 views
1

문자열의 자동 증가 :내가이 다른 테이블 가지고

표를

ID 
AK001 
AK001 
AK001 

(위 .... 등등 AK001, AK002, AK003되어야한다)

표 2

LastNum 
1 

표 1 : 업데이트 테이블 1 세트 ID = xx + 오른쪽 ('....'+()) 등등

표 2 : UPNATE 테이블 2 SET LastNum = LastNum + 1 (이 작동하지만 잘못된 정보를 입력하면 새 양식을 만들 때 아직 저장하지 않았을 때 +1도 표시)

내 질문은 표 2를 업데이트 한 후 표 1에서 자동 증가 및 업데이트하는 방법입니다. 왜냐하면 내가 직면 한 table1은 table2가 업데이트 될 때 동일한 번호를 유지합니다. 도와주세요!

+1

도움이 될 수 있습니다. http://stackoverflow.com/questions/3455557/mysql-how-to-use-varchar-as-auto-increment-primary-key – DON

+1

RDBMS를 사용하고 계시다면, MS SQL Server (version ?), MySQL, Postgre, Oracle? – Yaroslav

+0

@ Yaroslav 나는 SQL 서버 관리 스튜디오 – Bella

답변

1

표 1은 항상 Table2의 LastNum 필드에 해당하는 XXX로 끝나야한다고 가정하면 Trigger과 같은 소리가 가장 효율적입니다.

어떤 RDBMS를 사용하고 있습니까?

MySQL의 경우 :

CREATE TRIGGER myTrigger BEFORE INSERT ON Table2 
    FOR EACH ROW BEGIN 
    //Here you should use NEW.Lastnum to UPDATE your Table1 
    // update table1 set ID = xx + RIGHT('....'+()) 
    END; 

SQL 서버 :

CREATE TRIGGER myTrigger 
ON Table2 
AFTER INSERT 
AS 
    //Here you should use INSERTED table (Lastnum column) to UPDATE your Table1 
    // update table1 set ID = xx + RIGHT('....'+()) 
GO 

당신은 특정 RDBMS를 다른 구문을 조회 할 수 있어야한다.

행운을 비네.

+0

예, 답장을 보내 주셔서 감사합니다. 인스턴트 메신저 서버 관리 스튜디오 – Bella

+0

을 사용하고 있습니다. 비슷한 구문을 게시했습니다. 문제가 생기면 알려주세요. 작성하기가 쉽습니다. 행운을 빕니다. – sgeddes

+0

izzit 트리거가 update table1과 섞여 있습니까? – Bella

2

INT는 기본 키로 사용하고 varchar는 사용하지 않는 것이 좋습니다. 그런 다음 해당 필드를 외래 키로 사용하십시오.

여기에 detailed answer은 모든 유형의 키로 VARCHAR을 사용하지 않는 이유입니다.

유토피아 저장소 ID를 varchar로 저장하고 두 테이블에 새 필드를 추가하면 주 ID가 자동으로 증가하므로 IDENTITY가되어야합니다.

using VARCHAR as primary key에 대한 의견이 많습니다. 해결하려는 문제를 신중하게 분석해야합니다. 그리고 당연히, 어쩌면 당신은 아무것도 바꾸지 않고 이미 가지고있는 것과 일할 수도 있습니다. 이 경우 @sgeddes에서 제안한 것과 같은 방아쇠로 일부 작업을 사용해야합니다.

+0

INT를 사용하는 경우 문자열이있는 ID를 저장할 수 없습니다 – Bella

+5

@Bella : ** 모든 ** 행에 'AK'접두사가 있으면이를 저장할 필요가 없습니다. –

+0

답변이 명확하게 편집되었습니다 – Yaroslav