想做一个简单的卖书的网页(仅学习)
比如数据库里边有个存储剩余多少本书,比如剩10本
现在人家买走20本,数据库里不应该是-10本
这种情况怎么处理呢?
是用触发器吗?
可是,如果用触发器的话,怎么跟JSP连接起来呢?弹出提示筐还是转到其它页面呢?
还是,当作异常来处理?
或者是按照ullman书上说的,数据库只负责最原始的数据存储功能
其他的都交给应用程序那一层去处理呢?
现在急于凑项目经验,等着找工作呢
呵呵,希望大家能给个讲解,顺便指点一下哪里能看到这种问题的答案,我看了好多书了也没看到这种问题的解决,好奇怪,不知道算数据库里的,还是web开发里的,好像两头都没有讲到过似的

解决方案 »

  1.   

    你在jsp里用js判断下不就行了,不用那么麻烦!
      

  2.   

    这个没有必要用在tigger里吧,
    在请求的时候,判断一下嘛,先取出总的书,然后再判断够不够。
    ===========================================================
     触发器是一类特殊的存储过程,被定义为在对表或视图发出   UPDATE、INSERT   或   DELETE   语句时自动执行。触发器是功能强大的工具,使每个站点可以在有数据修改时自动强制执行其业务规则。触发器可以扩展   SQL   Server   约束、默认值和规则的完整性检查逻辑,但只要约束和默认值提供了全部所需的功能,就应使用约束和默认值。   
        
      表可以有多个触发器。CREATE   TRIGGER   语句可以与   FOR   UPDATE、FOR   INSERT   或   FOR   DELETE   子句一起使用,指定触发器专门用于特定类型的数据修改操作。当指定   FOR   UPDATE   时,可以使用   IF   UPDATE   (column_name)   子句,指定触发器专门用于具体某列的更新。   
        
      触发器可使公司的处理任务自动进行。在库存系统内,更新触发器可以检测什么时侯库存下降到了需要再进货的量,并自动生成给供货商的定单。在记录工厂加工过程的数据库内,当某个加工过程超过所定义的安全限制时,触发器会给操作员发电子邮件或寻呼。   
        
      无论何时只要有新的标题添加到   pubs   数据库中,下面的触发器就会生成电子邮件:   
        
      CREATE   TRIGGER   reminder   
      ON   titles   
      FOR   INSERT   
      AS   
            EXEC   master..xp_sendmail   'MaryM',   
                  'New   title,   mention   in   the   next   report   to   distributors.'   
        
      触发器包含   Transact-SQL   语句,这与存储过程十分相似。与存储过程一样,触发器也返回由触发器内的   SELECT   语句生成的结果集。不建议在触发器中包含   SELECT   语句,但仅填充参数的语句除外。这是因为用户不期望看到由   UPDATE、INSERT   或   DELETE   语句返回的结果集。   
        
      可使用   FOR   子句指定触发器的执行时间:     
        
      AFTER     
      触发器在触发它们的语句完成后执行。如果该语句因错误(如违反约束或语法错误)而失败,触发器将不会执行。不能为视图指定   AFTER   触发器,只能为表指定该触发器。可以为每个触发操作(INSERT、UPDATE   或   DELETE)指定多个   AFTER   触发器。如果表有多个   AFTER   触发器,可使用   sp_settriggerorder   定义哪个   AFTER   触发器最先激发,哪个最后激发。除第一个和最后一个触发器外,所有其它的   AFTER   触发器的激发顺序不确定,并且无法控制。   
        
      在   SQL   Server   2000   中   AFTER   是默认触发器。不能在   SQL   Server   7.0   版或更早的版本中指定   AFTER   或   INSTEAD   OF,这些版本中的所有触发器都作为   AFTER   触发器运行。   
        
      INSTEAD   OF     
      该触发器代替触发操作执行。可在表和视图上指定   INSTEAD   OF   触发器。只能为每个触发操作(INSERT、UPDATE   和   DELETE)定义一个   INSTEAD   OF   触发器。INSTEAD   OF   触发器可用于对   INSERT   和   UPDATE   语句中提供的数据值执行增强的完整性检查。INSTEAD   OF   触发器还允许指定某些操作,使一般不支持更新的视图可以被更新。