实际项目中应该注意的问题,想到了就记下来!
1、用关联表,建立主键和外键的关系,建立级联删除机制
2、数据库事务,在error>0时要及时Rollback tran tranname
alter procedure AddSchool(
@学校编号 varchar(50),
@学校名称 varchar(50),
@学校类别 varchar(50),
@学校电话 varchar(50),
@学校地址 varchar(50),
@省 varchar(50),
@市 varchar(50),
@区 varchar(50),
@学校描述 varchar(50),
@IP varchar(50),
@创建时间 dateTime,
@点数 int,
@积分 int,
@状态 int ,
@题库权限 varchar(50),
@到期时间 datetime,
@联系人 varchar(50),
@备注 varchar(200),
@学校图片1 varchar(50),
@学校图片2 varchar(50),
@学校分类 varchar(50)
)
as
--创建学校
declare @管理员角色编号 varchar(50),@jsid int
if Exists(select 学校编号 from 学校表 where 学校编号=@学校编号) return
begin tran ads
--系统初始化
insert into 学校表(学校编号,学校名称,学校类别,学校电话,学校地址,省,市,区,学校描述,IP,创建时间,点数,积分,状态,题库权限,到期时间,联系人,备注,学校图片1,学校图片2,学校分类)values
(@学校编号,@学校名称,@学校类别,@学校电话,@学校地址,@省,@市,@区,@学校描述,@IP,@创建时间,@点数,@积分,@状态,@题库权限,@到期时间,@联系人,@备注,@学校图片1,@学校图片2,@学校分类)
if Exists(select 学校编号 from 学校表 where 学校编号=@学校编号 )
begin
--1、添加学校学段学科表
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'小学','语文')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'小学','数学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'小学','英语')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','语文')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','数学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','英语')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','物理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','化学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','生物')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','历史')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','地理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','政治')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','语文')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','数学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','英语')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','物理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','化学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','生物')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','历史')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','地理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','政治')
--2、创建对应的角色(初始化生成)
select @jsid=max(id)+1 from 角色表
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid,'管理员','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+1,'校长','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+2,'任课老师','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+3,'班主任','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+4,'学科组长','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+5,'家长','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+6,'学生','不可删除和更改','系统默认',getdate(),@学校编号)
IF(@@error<>0)
BEGIN
ROLLBACK TRAN ads
END
--3、创建管理员用户(自动)
insert into 用户附表(用户标识,注册时间,是否激活,身份审核,密码,用户类型)values(@学校编号,getdate(),1,1,'111222','系统默认管理员')
--4、将该用户添加到该学校的角色中
select @管理员角色编号=ID from 角色表 where 学校编号=@学校编号 and 角色='管理员'
insert into 用户角色表(用户标识,角色编号,创建人)values(@学校编号,@管理员角色编号,'zhnet')
end
IF(@@error<>0)
BEGIN
ROLLBACK TRAN ads
END
else --如果没错,就提交事务
commit tran ads
GO
@学校编号 varchar(50),
@学校名称 varchar(50),
@学校类别 varchar(50),
@学校电话 varchar(50),
@学校地址 varchar(50),
@省 varchar(50),
@市 varchar(50),
@区 varchar(50),
@学校描述 varchar(50),
@IP varchar(50),
@创建时间 dateTime,
@点数 int,
@积分 int,
@状态 int ,
@题库权限 varchar(50),
@到期时间 datetime,
@联系人 varchar(50),
@备注 varchar(200),
@学校图片1 varchar(50),
@学校图片2 varchar(50),
@学校分类 varchar(50)
)
as
--创建学校
declare @管理员角色编号 varchar(50),@jsid int
if Exists(select 学校编号 from 学校表 where 学校编号=@学校编号) return
begin tran ads
--系统初始化
insert into 学校表(学校编号,学校名称,学校类别,学校电话,学校地址,省,市,区,学校描述,IP,创建时间,点数,积分,状态,题库权限,到期时间,联系人,备注,学校图片1,学校图片2,学校分类)values
(@学校编号,@学校名称,@学校类别,@学校电话,@学校地址,@省,@市,@区,@学校描述,@IP,@创建时间,@点数,@积分,@状态,@题库权限,@到期时间,@联系人,@备注,@学校图片1,@学校图片2,@学校分类)
if Exists(select 学校编号 from 学校表 where 学校编号=@学校编号 )
begin
--1、添加学校学段学科表
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'小学','语文')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'小学','数学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'小学','英语')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','语文')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','数学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','英语')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','物理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','化学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','生物')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','历史')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','地理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'初中','政治')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','语文')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','数学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','英语')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','物理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','化学')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','生物')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','历史')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','地理')
insert into 学校学段学科表(学校编号,学段,学科)values(@学校编号,'高中','政治')
--2、创建对应的角色(初始化生成)
select @jsid=max(id)+1 from 角色表
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid,'管理员','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+1,'校长','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+2,'任课老师','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+3,'班主任','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+4,'学科组长','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+5,'家长','不可删除和更改','系统默认',getdate(),@学校编号)
insert into 角色表( ID,角色,角色描述,创建人,创建时间,学校编号)values(@jsid+6,'学生','不可删除和更改','系统默认',getdate(),@学校编号)
IF(@@error<>0)
BEGIN
ROLLBACK TRAN ads
END
--3、创建管理员用户(自动)
insert into 用户附表(用户标识,注册时间,是否激活,身份审核,密码,用户类型)values(@学校编号,getdate(),1,1,'111222','系统默认管理员')
--4、将该用户添加到该学校的角色中
select @管理员角色编号=ID from 角色表 where 学校编号=@学校编号 and 角色='管理员'
insert into 用户角色表(用户标识,角色编号,创建人)values(@学校编号,@管理员角色编号,'zhnet')
end
IF(@@error<>0)
BEGIN
ROLLBACK TRAN ads
END
else --如果没错,就提交事务
commit tran ads
GO