Tổng Hợp Một Số Function Tạo Mã Tự động Tăng Trong SQL Server

Trong quá trình thiết kế Cơ sở dữ liệu, để lưu trữ, chúng ta sẽ cần dùng đến những mã tự động tăng để việc quản lý được dễ dàng hơn. Không chỉ vậy, các mã tự động tăng trong SQL luôn có một ý nghĩa riêng mà khi đọc mã chúng ta có thể hiểu hết một dòng dữ liệu theo mã đó.

1. Kiểu chữ cái trước và số sau: “KH001 > KH002 > … > KH999”

Function:

CREATE FUNCTION AUTO_IDKH() RETURNS VARCHAR(5) AS BEGIN DECLARE @ID VARCHAR(5) IF (SELECT COUNT(MAKH) FROM KHACHHANG) = 0 SET @ID = '0' ELSE SELECT @ID = MAX(RIGHT(MAKH, 3)) FROM KHACHHANG SELECT @ID = CASE WHEN @ID >= 0 and @ID < 9 THEN 'KH00' + CONVERT(CHAR, CONVERT(INT, @ID) + 1) WHEN @ID >= 9 THEN 'KH0' + CONVERT(CHAR, CONVERT(INT, @ID) + 1) END RETURN @ID END

Sử dụng: Thiết lập mặc định hàm DBO.AUTO_IDKH() cho trường MAKH

CREATE TABLE KHACHHANG( MAKH CHAR(5) PRIMARY KEY CONSTRAINT IDKH DEFAULT DBO.AUTO_IDKH(), HOTEN NVARCHAR(50) NOT NULL, SDT VARCHAR(11) NULL, DIACHI NVARCHAR(100) NULL, EMAIL VARCHAR(50) NULL )

Các bạn có thể tăng chiều dài mã bằng cách khai báo tăng chiều dài của MAKH và thêm nhiều nhánh CASE hơn.

2. Kiểu chỉ bao gồm chữ cái: AAAA > AAAB > … > ZZZZZ

Function:

CREATE FUNCTION TAOMAVE(@BEFORECODE CHAR(6))---65->90 RETURNS CHAR(6) AS BEGIN DECLARE @ONE AS SMALLINT, @TWO SMALLINT, @THREE SMALLINT, @FOUR SMALLINT, @FIVE SMALLINT, @SIX SMALLINT DECLARE @MAVE CHAR(6) SELECT @ONE=ASCII(LEFT(@BEFORECODE,1)) SELECT @TWO=ASCII(SUBSTRING(@BEFORECODE,2,1)) SELECT @THREE=ASCII(SUBSTRING(@BEFORECODE,3,1)) SELECT @FOUR=ASCII(SUBSTRING(@BEFORECODE,4,1)) SELECT @FIVE=ASCII(SUBSTRING(@BEFORECODE,5,1)) SELECT @SIX=ASCII(RIGHT(@BEFORECODE,1)) IF @SIX<90 SELECT @SIX=@SIX+1 ELSE BEGIN SELECT @SIX=65 IF @FIVE<90 SELECT @FIVE=@FIVE+1 ELSE BEGIN SELECT @FIVE=65 IF @FOUR<90 SELECT @FOUR=@FOUR+1 ELSE BEGIN SELECT @FOUR=65 IF @THREE<90 SELECT @THREE=@THREE+1 ELSE BEGIN SELECT @THREE=65 IF @TWO<90 SELECT @TWO=@TWO+1 ELSE BEGIN SELECT @TWO=65 IF @ONE<90 SELECT @ONE=@ONE+1 ELSE RETURN NULL END END END END END SELECT @MAVE=CHAR(@ONE)+CHAR(@TWO)+CHAR(@THREE)+CHAR(@FOUR)+CHAR(@FIVE)+CHAR(@SIX) RETURN @MAVE END

Sử dụng: Có thể gọi trong Procedure hoặc từ ứng dụng kết nối với Cơ sở dữ liệu

3. Kiểu Ngày Tháng Năm + Chữ cái + Số tự động tăng: 01012001DV00001 > 02012001DV00002

Function:

CREATE FUNCTION auto_iddv() RETURNS VARCHAR(15) AS BEGIN DECLARE @id VARCHAR(15) IF (SELECT COUNT(MaDV) FROM DATVE) = 0 SET @id = '0' ELSE SELECT @id = MAX(RIGHT(MaDV, 5)) FROM DATVE SELECT @id = CASE WHEN @id = 99999 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV00001' WHEN @id >= 0 and @id < 9 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV0000' + CONVERT(CHAR, CONVERT(INT, @id) + 1) WHEN @id >= 9 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV000' + CONVERT(CHAR, CONVERT(INT, @id) + 1) WHEN @id >= 99 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV00' + CONVERT(CHAR, CONVERT(INT, @id) + 1) WHEN @id >= 999 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV0' + CONVERT(CHAR, CONVERT(INT, @id) + 1) WHEN @id >= 9999 THEN CONVERT(VARCHAR,GETDATE(),112) + 'DV' + CONVERT(CHAR, CONVERT(INT, @id) + 1) END RETURN @id END

Sử dụng: Các bạn sử dụng tương tự như Kiểu 1

Mình đang tiếp tục cập nhật tiếp một số Funtion hữu ích khác… Theo dõi nhé các bạn!

Từ khóa » Khóa Chính Tự Tăng Sql