大家来帮我看看一个触发器问题

愤怒贝吉塔 2009-06-27 12:55:44
为book表 (有bookname,ISBN,price 等等字段)增加一个触发器。
实现功能:当插入一本书时,如果存在该记录,就让数量自动+1;
否则就直接插入

我学的不多,只写了一点
就是当插入一条记录时候,会为数量+1 可是 又会增加一条新的记录(这个表我没有设主键)
create trigger Book_on_insert
on books
for insert
as
begin transaction
update books set 数量 = 数量 + 1
where ISBN in (select ISBN from inserted)
commit transaction
GO

关于判断的语法(假如判断ISBN。如果表中有就让数量+1,否则按新纪录插入),我不会,所以请求高人指点一下!
...全文
39 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2009-06-27
  • 打赏
  • 举报
回复
不用触发器
在插入的存储过程里面判断 如果有这本书就数量加1 没有就插入
sdhdy 2009-06-27
  • 打赏
  • 举报
回复
--上面的那个理解有点问题,特修正一下。
create trigger Book_on_insert
on books
instead of insert
as
if exists(select 1 from books a,inserted b where a.ISBN=b.ISBN)
update a set 数量 = a.数量 + 1 from books a,inserted b where a.ISBN=b.ISBN
else
insert books select * from inserted
sdhdy 2009-06-27
  • 打赏
  • 举报
回复
--可以没有主键,但你要有一个唯一性字段,如
--如果不存在的话,自然会插入的。
create trigger Book_on_insert
on books
for insert
as
if exists(select 1 from books a,inserted b where a.ISBN=b.ISBN)
update a set 数量 = a.数量 + 1 from books a,inserted b where a.ISBN=b.ISBN

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧