题目:设计主键生成存储过程
一个业务表应该有主键,对于主键的处理可以采用表的identity
列,来生成自动增长的主键。但是对于复杂的业务表,如果使用
这样的方式,那么主键的作用就太小了,我们应该让主键承担更
重要的含义。
比如:一个行的主键位15,我们不能知道这个主键值代表什么含义。
但是如果一个主键为PO0508110004,我们就可以知道PO代表
采购订单,0508代表2005年8月11日,0004代表当天第四号单据。
我们把前两个字母PO称为字轨,所以一个业务主键应该有以下结构:
字轨+日期+序号
请设计一个支持表以及一个存储过程来完成主键的生成;
参考答案:
请使用查询分析器运行
--drop table MyRecordNo
use pubs
go
/*
create table MyRecordNo(
mrn_tablename varchar(20) not null primary key,
mrn_sign varchar(2) null,
mrn_lastno int not null,
mrn_lastdate datetime not null
)
*/
go
--------------------------------------------------
drop PROCEDURE getBillNo
go
CREATE PROCEDURE getBillNo @tablename varchar(20), @billno varchar(20)