日期:2014-05-18 浏览次数:20641 次
if object_id('借阅信息') is not null
drop table 借阅信息
go
create table 借阅信息
(
图书编号 char(50),
借书证号 char(50),
借书时间 smalldatetime,
应还时间 smalldatetime,
归还时间 smalldatetime,
已借书数目 smallint,
可借书数目 smallint
)
go
insert into 借阅信息 select '1','1','2011-11-11','2011-11-15',null,1,1
--建立update触发器
if object_id('tr_借阅信息') is not null
drop trigger tr_借阅信息
go
create trigger tr_借阅信息 on 借阅信息
for update
as
if update(归还时间)
insert into 归还书籍 select 图书编号,借书证号,借书时间,归还时间 from inserted
go
if object_id('归还书籍') is not null
drop table 归还书籍
go
create table 归还书籍
(
图书编号 char(50),
借书证号 char(50),
借书时间 smalldatetime,
归还时间 smalldatetime
)
go
--更新归还时间,触发器自动执行插入
update 借阅信息 set 归还时间='2011-11-14' where 图书编号=1
select * from 归还书籍
/*
图书编号 借书证号 借书时间 归还时间
-------------------------------------------------- -------------------------------------------------- ----------------------- -----------------------
1 1 2011-11-11 00:00:00 2011-11-14 00:00:00
(1 行受影响)
*/
------解决方案--------------------
这个是谁设计的?第一个表明显可以再分。我写了一个简单的实现方法,具体的你可以修改:
/*
after触发器能否对表里某一项里面的内容插入或更新之后触发
比如说有这么两个表
借阅信息表(borrowinfo) 归还书籍表(returninfo)
图书编号 char(50) 图书编号 char(50)
借书证号 char(50) 借书证号 char(50)
借书时间 smalldatetime 借书时间 smalldatetime
应还时间 smalldatetime 归还时间 smalldatetime
归还时间 smalldatetime
已借书数目 smallint
可借书数目 smallint
*/
go
if OBJECT_ID('borrowinfo') is not null
drop table borrowinfo
go
create table borrowinfo(
图书编号 char(50),