NEWS

[SQLSERVER] Tạo mã sản phẩm tự động như: SP0001, SP0002, SP0003... sử dụng Trigger

[SQLSERVER] Tạo mã sản phẩm tự động như: SP0001, SP0002, SP0003... sử dụng Trigger
Đăng bởi: Thảo Meo - Lượt xem: 3177 11:25:10, 15/02/2023C#   In bài viết

Xin chào các bạn, bài viết hôm nay mình hướng dẫn các bạn cách tạo mã sản phẩm tự động như product code: SP0001, SP0002... trong sqlserver.

[SQLSERVER] Tạo mã sản phẩm tự động Product Code: SP0001, SP0002,....

Đầu tiên, các bạn tạo cho mình 1 table Product 

CREATE TABLE Product
(
    ID INT IDENTITY(1,1) PRIMARY KEY,
	Code VARCHAR(6),
    Name NVARCHAR(50) NOT NULL
)

Video hướng dẫn step by step:

Tiếp đến, chúng ta sẽ tạo 1 Trigger, để khi dữ liệu insert mới vào chúng ta sẽ update cột Code lại.

CREATE TRIGGER trgAutoGenerateCode
ON Product
AFTER INSERT
AS
BEGIN
  DECLARE @maxId INT, @newCode VARCHAR(10)
  SELECT @maxId = ISNULL(MAX(RIGHT(Code, 4)), 0) + 1
  FROM Product
  SELECT @newCode = 'SP' + RIGHT('0000' + CAST(@maxId AS VARCHAR(4)), 4)
  FROM Product
  UPDATE Product SET Code = @newCode
  WHERE Id IN (SELECT Id FROM inserted)
END

Giải thích các bước trong trigger:

  • Bước 1: Tạo trigger với tên trgAutoGenerateCode cho bảng TableName.
  • Bước 2: Trigger được kích hoạt sau khi một bản ghi mới được chèn vào bảng TableName.
  • Bước 3: Khai báo biến @maxId@newCode.
  • Bước 4: Lấy giá trị lớn nhất của mã code hiện có trong bảng, bỏ phần 'SP' và lấy 4 chữ số cuối cùng.
  • Bước 5: Tạo mã code mới bằng cách cộng 1 vào giá trị @maxId, sau đó đưa nó về dạng chuỗi có 4 chữ số bằng cách sử dụng hàm RIGHT và thêm phần 'SP' ở đầu.
  • Bước 6: Cập nhật mã code mới vào bảng cho tất cả các bản ghi mới được chèn, sử dụng điều kiện WHERE Id IN (SELECT Id FROM inserted).

 

Tiếp đến, bạn insert vài sản phẩm để test thử.

INSERT INTO [dbo].[Product]
(
    
    [Name]
)
VALUES
(   
    N'Beer'   -- Name - nvarchar(50)
)

Và dưới đây là kết quả:

product_code_auto_sql

Thanks for watching!

THÔNG TIN TÁC GIẢ

BÀI VIẾT LIÊN QUAN

[SQLSERVER] Tạo mã sản phẩm tự động như: SP0001, SP0002, SP0003... sử dụng Trigger
Đăng bởi: Thảo Meo - Lượt xem: 3177 11:25:10, 15/02/2023C#   In bài viết

CÁC BÀI CÙNG CHỦ ĐỀ

Đọc tiếp
.