Tôi đã hoàn toàn giải quyết nó, chỉ cần có một cái nhìn ..
Lúc đầu, bạn phải mất một bảng mẫu nơi các cột sẽ được cùng với các cột của bảng ban đầu của bạn ngoại trừ cột project_id
.
sau đó chèn một hàng vào bảng gốc với giá trị của cột project_id
= 0 và các cột khác là rỗng, chỉ cần chèn hàng đầu tiên theo cách thủ công như thế này.
Sau đó, tạo trình kích hoạt trên bảng mẫu như sau ...
////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////
delimiter ;;
tạo kích hoạt t sau khi chèn vào try
cho mỗi hàng
bắt đầu
khai báo v int;
khai báo c int;
đặt v = (chọn tối đa (project_id
) từ original
);
if (v = 0) sau đó
chèn vào original
thiết
project_id
= concat ((chọn concat (bên phải (substring_index ((select * from (chọn curdate() từ try
giới hạn 1) như a), '-', '1'), 2), phải (substring_index ((chọn * từ (chọn curdate() từ try
giới hạn 1) dưới dạng a), '-', '2'), 2)) từ try
giới hạn 1), '- 001'),
project
= mới. project
;
khác
bộ c = (chọn đúng ((chọn max (project_id
) từ original
) như x, 3) từ original
giới hạn 1);
chèn vào original
thiết
project_id
= concat ((chọn concat (bên phải (substring_index ((select * from (chọn curdate() từ try
giới hạn 1) như là một), '-', '1') , 2), phải (substring_index ((chọn * từ (chọn curdate() từ try
giới hạn 1) dưới dạng a), '-', '2'), 2)) từ try
giới hạn 1), concat ('- 00' , c + 1)),
project
= mới. project
;
xóa khỏi original
giới hạn 1;
kết thúc nếu;
kết thúc ;;
////////////////////////////////////////////// ////////////////////////////////////////////////// ////////////////////////////////////////////////// ///////////////////
Trong cò trên bảng mẫu của tôi là try
(project
văn bản) và bảng ban đầu là original
(project_id
văn bản, project
văn bản).Sau khi tạo một trình kích hoạt như thế này trên bảng mẫu, bắt đầu chèn các hàng trong bảng mẫu, các hàng sẽ tự động được chèn vào bảng gốc với các giá trị auto_increment trong cột project_id
như.405-001,1405-002, 1405-003 .... trong đó 14
là 2014
và 05
là May
và phần còn lại là giá trị auto_incremented đang được tăng lên bằng trình kích hoạt.
Chỉ cần làm theo các bước trên, vấn đề của bạn sẽ được giải quyết chắc chắn.
Quy trình được lưu trữ hoặc thực hiện chèn bằng ngôn ngữ lồng ghép như Perl, Java hoặc C#. Ở mức tối thiểu, bạn sẽ cần phải 1) chọn tối đa (Project_id), 2) xác định nếu nó giống nhau hoặc một tháng/năm khác nhau, 3) nhận mã năm và tháng, 4) tính chỉ mục (-001, - 002, vv) và 5) chèn giá trị Project_id kết quả (cùng với phần còn lại của các trường đi kèm với bản ghi này). IMHO ... – paulsm4
Có không có cơ chế trong xây dựng trong MySql để cho phép điều này. Theo dõi @ paulsm4 – Minesh
Chức năng được lưu trữ để có được 'Project_ID' tiếp theo. – SparKot