Mình đang xây dựng nhóm "anh Thầy & Đồng bọn (Hỏi đáp, chia sẻ kiến thức)" mục đích để các bạn có một nơi giao lưu trao đổi.
Đội MOD của group và mọi người sẽ hỗ trợ bạn ngay lập tức.
Join ở đây nè: https://www.facebook.com/groups/anhthayvadongbon
Tên bài học: Tổng hợp một số Function tạo mã tự động tăng trong SQL Server
Thời gian học: 1 giờ | Nguồn: thichchiase.com | Lượt xem: 1405 lượt xem
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ã đó.
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.
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
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
This site does not store any files on its server. We only index and link to content provided by other sites. Please contact the content providers to delete copyright contents if any and email us, we'll remove relevant links or contents immediately.
Trang web này không lưu trữ bất kỳ tệp (files) nào trên máy chủ (server). Chúng tôi chỉ lập chỉ mục và liên kết đến nội dung được cung cấp bởi các trang web khác. Vui lòng liên hệ với các nhà cung cấp nội dung để xóa nội dung bản quyền nếu có và gửi email cho chúng tôi, chúng tôi sẽ xóa các liên kết hoặc nội dung có liên quan ngay lập tức.
Bạn có muốn xác nhận hoàn thành bài học này không?