Tự động sinh dữ liệu cho một trường DB
Tự động sinh dữ liệu cho một trường DB
Rất nhiều trường hợp chúng ta cần tự sinh mã , chuỗi cho một số trường khi dữ liệu được insert vào database .
Ví dụ mỗi sinh viên Aptech sẽ có mã kiểu như A000856 , 856 đơn giản là ID của sinh viên , nhưng toàn bộ hệ thống aptech toàn cầu chỉ quản lý thông qua code chứ không phải ID . Chính vì vậy code trên tự sinh ra từ ID là ngon nhất .
Cách làm :
1.Dùng table
CREATE TABLE Aptech_Student ( sname varchar(15), ID int identity(1,1), code AS 'A' + RIGHT('0000'+CAST(ID AS varchar(4)),4) ) Test: insert into test (sname) values (1) -- select *from test -- sname ID student_ID 1 1 A00001
2.Dùng function
create function CustomerNumber (@id int) returns char(5) as begin return 'C' + right('0000' + convert(varchar(10), @id), 4) end --
Gán hàm trên vào cột:
alter table Customers add CustomerNumber as dbo.CustomerNumber(dbID)
hoặc gán vào trigger
Dùng trigger
alter Customers add CustomerNumber varchar(10)
create trigger Customers_insert
on Customers after insert
as
update Customers
set Customers.customerNumber = dbo.CustomerNumber(Customers.dbID)
from Customers inner join inserted
on Customers.dbID= inserted.dbID
3.Dùng procedure
create procedure prcGenCode @codeno char(6) OUTPUT as select @codeno = Max(Ccodeno) from testtable select @codeno = case when @codeno >=0 and @codeno < 9 then '00000' + convert(char,@codeno + 1) when @codeno >=9 and @codeno < 99 then '0000' + convert(char,@codeno + 1) when @codeno >=99 and @codeno < 999 then '000' + convert(char,@codeno + 1) when @codeno >=999 and @codeno < 9999 then '00' + convert(char,@codeno + 1) when @codeno >=9999 and @codeno < 99999 then '0' + convert(char,@codeno + 1) when @codeno >=99999 then convert(char,@codeno + 1) end return
Như vậy có thể thấy cách gen dùng trực tiếp trên bảng văn minh hơn .
Cách làm này dễ nhất , nhưng ít người biết , mà thường sử dụng các giải pháp Trigger , hoặc procedure ..
(i-php.net)
Các tin khác cùng chuyên mục
- Kỹ thuật lập trình HTML/CSS mới nhất 2020 - 04
- Funny web2.0
- Giải thử vài câu đề thi tốt nghiệp ptth môn toán
- MỘT NGÀY PHẢI KHÁC MỌI NGÀY
- Level 1 - Lập trình hướng đối tượng (P2)
- Level 1 - Lập trình hướng đối tượng (P1)
- PHP 5.3, Phần 3: Không gian tên
- PHP 5.3, Phần 2: Bao đóng và các hàm lambda
- PHP 5.3, Phần 1: Các thay đổi về giao diện đối tượng
- Tăng tốc độ xử lý CSDL MySQL
Liên kết
Tin được quan tâm nhất
- Ant Group của Jack Ma hé lộ bước đi đầu tiên...
- Ô tô giao hàng tự lái sẽ bắt đầu hoạt...
- Clip cô giáo phạt học sinh tự ném vỡ...
- Tiền điện tử lớn thứ ba thế giới Ripple...
- Joe Biden kêu gọi hiện đại hóa hệ thống...
- Viettel khai trương nền tảng Hồ sơ sức khỏe...
- Các hãng di động nên ngừng cãi nhau về việc...
- Công nghệ AI của Alibaba và Tân Hoa Xã: Đối...
- Một năm đáng thất vọng của YouTube trên toàn...
- EVN lần đầu diễn tập an toàn thông tin mạng...
- Đây là chiếc iPhone được mua nhiều nhất...
- Bộ Tài chính ra quy chế mới về quản lý, sử...
- Cập nhật nhãn mới giúp người tiêu dùng...
- Kiếm tiền từ 5G: Thách thức lớn nhất của...
- "Hô biến" iPhone thành cục đá: Có thể bị...
- Phí trước bạ ô tô không gia hạn giảm, sẽ...
- Tại sao Apple chế tạo ô tô?
- Viettel cung cấp dịch vụ 5G tại thành phố...
- Đội KingTigerPrawn của Hàn Quốc giành giải...
- Thứ trưởng Phan Tâm: “Triển khai hạ tầng 5G...
- Nhiều mẫu iPhone chính hãng đang khan hàng tại...
- Mỹ quy định drone cần có ID, trang bị đèn ban...
- Trung Quốc điều tra Alibaba: Bài học cho Jack Ma...
- Chuyên gia dự báo 5 xu hướng tấn công mạng...
- Apple MagSafe vẫn còn rất nửa vời
- Các tỉnh cuối cùng đã ngừng phát sóng...
- 55/63 tỉnh thành sử dụng Zalo trong cải cách...
- Headline: CR7: “Mong muốn của tôi là luôn...
- Samsung dự kiến xuất xưởng dưới 300 triệu...
- Vì sao Trung Quốc ‘sờ gáy’ Alibaba?
- Những smartphone được người Việt mua nhiều...
- Vì sao mua hàng ở sàn TMĐT Mỹ không cần...
- Đằng sau bức ảnh động viên Đà Nẵng chiến...
- VNPT cung cấp MyTV Box 2020 - Tính năng nâng cấp...
- Clip hành động ghê tởm của shipper trước khi...
- Các đội thi chung kết WhiteHat Grand Prix 6 phát...