:기본 키
이12-0001, 12-0002
(12)는 시스템 날짜의 현재 연도 인 2012 년 대표 .
그리고 ID에 대한 마지막 기록은 12-0999과 2013 내 ID는이 같은 4 자리 연도 접두사를 변경하고 재설정 할 때 : 내가 asp.net의 MVC를 사용하고
13-0001, 13-0002.
을 3 및 SQL Server Express 2008.
누구든지이 작업을 수행 할 수있는 방법을 말해 줄 수 있습니까?
:기본 키
이12-0001, 12-0002
(12)는 시스템 날짜의 현재 연도 인 2012 년 대표 .
그리고 ID에 대한 마지막 기록은 12-0999과 2013 내 ID는이 같은 4 자리 연도 접두사를 변경하고 재설정 할 때 : 내가 asp.net의 MVC를 사용하고
13-0001, 13-0002.
을 3 및 SQL Server Express 2008.
누구든지이 작업을 수행 할 수있는 방법을 말해 줄 수 있습니까?
나는 두 가지 옵션을 참조하십시오
당신이에 데이터를 삽입하고 테이블이있는 "오른쪽"올해가있는DATE
또는
DATETIME
열이있는 경우
(1), 당신은 단순히 지속, 계산을 추가 할 수 있습니다 테이블에 열 - 같은 :
ALTER TABLE dbo.YourTable
ADD PKID AS RIGHT(CAST(YEAR(DateColumn) AS CHAR(4)), 2) + '-' +
RIGHT('00000' + CAST(ID AS VARCHAR(5)), 5) PERSISTED
이
ID
가 일련 번호를 자동 생성
INT IDENTITY
열임을 가정하고 (필요에 따라 변경) 새 열
PKID
를 호출합니다.
계산 된 열 이기 때문에 행이 삽입 될 때 한 번 계산되고 색인을 생성하여 기본 키로 사용할 수 있습니다.
(2) 테이블에 날짜 열과 같은 것이없는 경우 유일한 옵션은 AFTER INSERT
트리거를이 테이블에 트리거하는 것입니다 (다시 : 열이 있다고 가정하면 ID INT IDENTITY
) 자동 증가 번호를 제공합니다 : 트리거가
CREATE TRIGGER trgInsert ON dbo.YourTable
AFTER INSERT
AS
BEGIN
DECLARE @YearPrefix CHAR(2)
SET @YearPrefix = RIGHT(CAST(YEAR(GETDATE()) AS CHAR(4)), 2)
UPDATE dbo.YourTable
SET OtherID = @YearPrefix + '-' + RIGHT('00000' + CAST(i.EmployeeID AS VARCHAR(5)), 5)
FROM INSERTED i
WHERE dbo.YourTable.EmployeeID = i.EmployeeID
END
그리고 물론
는, 먼저,도 테이블이 새PKID
열을 추가 할 필요가 ALTER TABLE dbo.YourTable
ADD PKID VARCHAR(10) NOT NULL DEFAULT ('X') -- needs to be NOT NULL for Primary Key
시스템 날짜를 2014와 같이 변경하면 새로운 값이 삽입되고 14-0068이되고 테이블의 마지막 레코드는 12-0067이됩니다. 나는 그것을 14-0068 대신에 14-0001로 만들고 싶다. – keizune
@keizune : 글쎄,이 경우에는 'IDENTITY' 열을 사용할 수 없습니다. SQL Server 2008 R2 또는 이전 버전에서는 제대로 작동하려면 많은 수작업을해야합니다. 또는 데이터베이스 개체로 'SEQUENCE'를 지원할 SQL Server ** 2012 **를 기다려야합니다. 새해에 다시 1로 시작하도록 재설정). –
제안 해 주셔서 감사합니다.하지만 제공해 주신 코드를 계속 사용하겠습니다. 그것은 내 프로젝트에 큰 문제가되지 않습니다. – keizune
@marc_s 날짜 또는 데이터가 없습니다. 내 테이블에 IME 열. 내 테이블 이름에 자동 생성 된 EMPLOYEEID 열 (예 : 성, 이름, 생일, 주소 등)이 있습니다. – keizune
@keizune : 내 응답을 봅니다. 옵션 번호를보십시오. 2 –