📄 学院职工.txt
字号:
create database 学院人事管理信息系统
on
(name=main1,
filename='e:\mssql\data\orderdat.mdf',
size=20,maxsize=80,
filegrowth=5
)
log on
(name=main2,
filename='e:\mssql\log\orderlog.ldf',
size=10 MB,
maxsize=30 MB,
filegrowth=5MB
)
create table 学院职工基本信息
(职工编号 char(8) primary key ,
姓名 char(20),性别 char(2), 年龄 int ,
籍贯 char(50) ,毕业院校 char(20) , 学历 char(10),
职务 char(20) , 部门 char(10) , 基本工资 int ,
参加工作时间 datetime , 离职时间 datetime )
create table 学院职工工资信息
(工资编号 char(8) primary key, 职工编号 char(8), 姓名 char(20),
基本工资 int, 奖金 int, 罚金 int, 其他金额 int ,工资发放日期 datetime)
create table 学院各部门基本信息
(部门编号 char(8) ,部门 char(10) primary key ,
负责人 char(20),职工编号 char(8) ,联系电话 char(15))
create table 职工奖惩记录
(职工编号 char(8) primary key , 姓名 char(20), 奖励等级 char(20), 奖励原因 char(100),
惩罚等级 char(20) ,惩罚原因 char(100), 奖金 int ,罚金 int )
create table 职工考勤记录
(职工编号 char(8) primary key , 姓名 char(20), 累计加班时间 int,迟到次数 int,早退次数 int, 请假次数 int )
create table 职工升降职信息
(职工编号 char(8) primary key ,姓名 char(20) ,原职务 char(20), 现任职务 char(20), 调动时间 datetime)
create table 职工调动或离职信息
(职工编号 char(8) primary key ,姓名 char(20) ,
原部门 char(10) ,现部门或离职 char(10),调动或离职时间 datetime )
/*创建索引*/
create unique index 职工
on 学院职工基本信息 (职工编号)
create unique index 工资
on 学院职工工资信息 (职工编号)
create unique index 部门
on 学院各部门基本信息 (部门编号)
/*创建触发器*/
create trigger gongzi on 学院职工工资信息
for update
as
if exists (select 工资发放日期 from 工资信息 where 工资发放日期 is not null)
begin
declare @工资编号 char(8) ,@职工编号 char(8), @姓名 char(20), @基本工资 int,
@奖金 int, @罚金 int, @其他金额 int ,@工资发放日期 datetime
set @工资编号 = (select 工资编号 from inserted)
set @职工编号 = (select 职工编号 from inserted)
set @姓名 = (select 姓名 from inserted)
set @基本工资 = (select 基本工资 from inserted)
set @奖金 = (select 奖金 from inserted)
set @罚金 = (select 罚金 from inserted)
set @其他金额 = (select 其他金额 from inserted)
set @工资发放日期 = (select 工资发放日期 from inserted)
if exists (select 工资发放日期 from 工资信息 where 工资发放日期 is not null)
update 工资信息
SET 奖金 = 0, 罚金 = 0 ,工资发放日期 = null
WHERE 职工编号 = (select 职工编号 from inserted)
insert into 学院职工工资信息
values (@工资编号,@职工编号 , @姓名 , @基本工资 , @奖金 , @罚金 , @其他金额 ,@工资发放日期 )
end
create trigger jiangcheng on 职工奖惩记录
for update
as
if update (罚金)
update 学院职工工资信息
SET 罚金 = (select 罚金 from inserted)
WHERE 职工编号 = (select 职工编号 from inserted)
if update (奖金)
update 学院职工工资信息
SET 奖金= (select 奖金 from inserted)
WHERE 职工编号 = (select 职工编号 from inserted)
create trigger kaoqin on 职工考勤记录
for update
as
if update (迟到次数)
update 奖惩信息
SET 罚金= 罚金 + 10
WHERE 职工编号 = (select 职工编号 from inserted)
if update (早退次数)
update 奖惩信息
SET 罚金= 罚金 + 10
WHERE 职工编号 = (select 职工编号 from inserted)
if update (请假次数)
update 奖惩信息
SET 罚金= 罚金 + 10
WHERE 职工编号 = (select 职工编号 from inserted)
if update (累计加班时间)
update 奖惩信息
SET 奖金 = 奖金 + 50
WHERE 职工编号 = (select 职工编号 from inserted)
CREATE TRIGGER updown ON 职工升降职信息
FOR INSERT
AS
BEGIN TRANSACTION
IF NOT EXISTS (
SELECT 职工编号
FROM 职工信息
WHERE 职工编号 IN (SELECT 职工编号 FROM INSERTED))
BEGIN
RAISERROR('错误!职工考勤记录中并无此人。',16,1)
ROLLBACK
RETURN
END
CREATE TRIGGER move ON 职工调动或离职信息
FOR INSERT
AS
BEGIN TRANSACTION
IF NOT EXISTS (
SELECT 职工编号
FROM 职工信息
WHERE 职工编号 IN (SELECT 职工编号 FROM INSERTED)
)
BEGIN
RAISERROR('错误!职工考勤记录中并无此人。',16,1)
ROLLBACK
RETURN
END
/*创建视图*/
create view 工资视图 as
select *
from 学院职工工资信息
/*执行视图*/
select *
from 工资视图
/*存储过程*/
create proc 按部门查询工资
( @部门查询 char(10))
as
if @部门查询 is not null
begin
select * from 工资视图
where 职工编号 in (select 职工编号 from 学院职工基本信息 where 部门 = @部门查询)
end
return 0
create proc 按编号查询工资
( @编号查询 char(8))
as
if @编号查询 is not null
begin
select * from 工资视图
where 职工编号 = @编号查询
end
return 0
create proc 按编号查询职工信息
(@职工编号 char(8))
as
begin
select * from 学院职工基本信息 where 职工编号 = @职工编号
end
return 0
create proc 按部门查询职工信息
(@部门 char(10))
as
begin
select * from 学院职工基本信息 where 部门 = @部门
end
return 0
create proc 添加职工
(@职工编号 char(8) ,@姓名 char(20),@性别 char(2), @年龄 int ,
@籍贯 char(50) ,@毕业院校 char(20) , @学历 char(10),
@职务 char(20) , @部门 char(10) , @基本工资 int ,@参加工作时间 datetime ,
@离职时间 datetime)
as
begin
insert into 学院职工基本信息 values ( @职工编号 ,@姓名 ,@性别 , @年龄 , @籍贯 ,@毕业院校 , @学历 ,
@职务 , @部门 , @基本工资 ,@参加工作时间 , @离职时间 )
end
return 0
create proc 修改职工信息
(@职工编号 char(8) ,@姓名 char(20),@性别 char(2), @年龄 int ,
@籍贯 char(50) ,@毕业院校 char(20) , @学历 char(10),
@职务 char(20) , @部门 char(10) , @基本工资 int ,@参加工作时间 datetime ,
@离职时间 datetime)
as
update 学院职工基本信息 set 职工编号 = @职工编号 ,姓名=@姓名 ,性别 = @性别 , 年龄 = @年龄 ,籍贯 = @籍贯 ,毕业院校 = @毕业院校 ,学历 = @学历 ,
职务 = @职务 ,部门 = @部门 , 基本工资 = @基本工资 ,参加工作时间 = @参加工作时间 , 离职时间 = @离职时间
where 职工编号 = @职工编号
return 0
create proc 修改个人工资
(@职工编号 char(8) , @基本工资 int )
as
update 学院职工基本信息 set 基本工资 = @基本工资
where 职工编号 = @职工编号
return 0
create proc 添加升降职
(@职工编号 char(8) ,@姓名 char(20),@原职务 char(20) ,@现任职务 char(20), @调动时间 datetime)
as
begin
insert into 职工升降职信息 values(@职工编号 ,@姓名 ,@原职务 , @现任职务 , @调动时间 )
end
return 0
create proc 添加调动或离职
(@职工编号 char(8) ,@姓名 char(20),@原部门 char(10) ,@现部门或离职 char(10), @调动或离职时间 datetime)
as
begin
insert into 职工调动或离职信息 values ( @职工编号,@姓名 ,@原部门 ,@现部门或离职 ,@调动或离职时间 )
end
return 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -