我有一个玩具管理系统数据库,有两个表:
toys
(玩具,关联,类别,价格,数量)category
(categoryid,categoryname,description) toyid
中的toys
将根据所选类别自动生成。
例如,如果我选择类别为infant
,那么生成的ID就像IN100
。
如果我选择Grown up
ID为GU100
。
每个类别都有自己的增量ID ..
IN100,IN101,IN102,....
GU100,GU101,GU102,,,,
如何自动生成上述系列?
如何在存储过程的帮助下执行此操作?
答案 0 :(得分:3)
我建议您不这样做。只需使toyid
成为自动递增的标识列即可。这种合成密钥比信息密钥更灵活。
考虑一下:如果将现有类别拆分为两类,您会怎么做?如果将两个现有类别合并为一个新类别,您会怎么做?如果您有多个具有相同两位数前缀的类别,那么这些ID会是什么意思?
相反,只需使用合成密钥并使用数据库在需要时查找类别。
也就是说,如果你忽视这个建议,那么你需要toys
表上的触发器来创建适当的id。
答案 1 :(得分:-1)
DECLARE @Id INT = 0,@ CatCode VARCHAR(50)=''
SELECT @Id = MAX(toyid)FROM玩具WHERE category = your_Selected_Category SELECT @CatCode = categoryCode FROM category WHERE categoryid = your_Selected_Categoryid
IF ISNULL(@Id,'')=''
SET @Id = @CatCode + RIGHT((' 100' + 1),3)
ELSE
SET @Id = @CatCode + RIGHT((' 100' +(@ Id + 1)),3)