我自己写了一个
CREATE TRIGGER recoder_bookoutON dbo.BOOK_VIEWINSTEAD OF UPDATE,insert
 ASDECLARE @new_isbn char(50),@old_isbn char(50) ,@new_出库数 int,@new_出库时间 datetimeSET @new_isbn = (SELECT ISBN FROM Inserted)
set @old_isbn = (select ISBN from Deleted)
IF @new_isbn = @old_isbnBEGINUPDATE dbo.图书出库信息表 SET 出库数 =出库数+ Inserted.出库数update
dbo.图书库存信息表
set
             库存数=库存数-@new_出库数 
ENDELSEIF @new_isbn <>@old_isbnBEGIN
insert 
dbo.图书出库信息表
(ISBN,出库数,出库时间)
          values(@new_ISBN,@new_出库数,@new_出库时间)update
dbo.图书库存信息表
set
             库存数=库存数-@new_出库数 END但是有错误:
服务器: 消息 107,级别 16,状态 2,过程 recoder_bookout,行 16
列前缀 'Inserted' 与查询中所用的表名或别名不匹配。

解决方案 »

  1.   

    create trigger books_in
    on 图书入库信息表
    for insert
    as
    set nocount on
    -->库存金额也在一起处理了
    update a set a.库存数=a.库存数+b.入库数, a.库存金额=a.库存金额+b.定价*b.入库数 from 图书库存信息表 as a join INSERTED as b on a.ISBN=b.ISBN
    insert 图书库存信息表 ISBN, 书名, 作者, 出版社, 定价, 入库数 as 库存数, 定价*入库数 as 库存金额 from INSERTED as t where not exists (select 1 from 图书库存信息表 where ISBN=t.ISBN)
    set nocount off
    go
      

  2.   

    create trigger books_out
    on 图书出库信息表
    for insert
    as
    set nocount on
    -->库存金额也在一起处理了
    update a set a.库存数=a.库存数-b.出库数, a.库存金额=a.库存金额-a.定价*b.出库数 from 图书库存信息表 as a join INSERTED as b on a.ISBN=b.ISBN
    set nocount off
    go
      

  3.   

    -- 4楼有错,漏了 selectcreate trigger books_in
    on 图书入库信息表
    for insert
    as
    set nocount on
    -->库存金额也在一起处理了
    update a set a.库存数=a.库存数+b.入库数, a.库存金额=a.库存金额+b.定价*b.入库数 from 图书库存信息表 as a join INSERTED as b on a.ISBN=b.ISBN
    insert 图书库存信息表 select ISBN, 书名, 作者, 出版社, 定价, 入库数 as 库存数, 定价*入库数 as 库存金额 from INSERTED as t where not exists (select 1 from 图书库存信息表 where ISBN=t.ISBN)
    set nocount off
    go
      

  4.   

    你好    我在实际的设计中在打印报表时想在出库表和入库表中的统计表中显示金额总计
    -------------------------create table 图书入库信息表
    ( bh int,
      ISBN char(50) not null primary key,
      书名 char(50) not null,
      作者 char(10) not null,
      出版社 char(50) not null,
      定价 money not null,
      入库数 int not null,
      入库时间 datetime not null
      入库总价 money
    )
    go
    -------------------------
    create table 图书出库信息表
    ( bh int,
      ISBN char(50) not null primary key,
      出库数 int not null,
      出库时间 datetime not null
      出库总价 money
    )
    go
    我想在出库表中通过ISBN的调用直接把库存表中的定价,作者,出版社等信息显示在面板上,要不要再出库表修改表结构 ???
    另外,我在出库和入库时,我现在觉得 因为入库时如果操作时间相同,则更新入库表的入库数,不同的话则插入为新纪录,
    出库表亦同,但在实际操作的时候,因为我定义了ISBN为主键,所以插入新的时有ISBN主键唯一的错误,麻烦能不能帮忙看下!!!!
    谢谢