日期:2014-05-17  浏览次数:20909 次

如何用触发器实现这个。。。
餐厅点餐系统:
有个订单表-->定单对应的菜表,订单对应的酒水表。。。下面就是最恶心的(要求要一个订单的修改的详细记录),详细记录里面有:是顾客、前台还是服务员修改了菜单,添加/删除/修改了 哪些菜或酒水(以及菜或酒水的注释信息),修改了总订单表的备注信息,注释信息,修改时间。。。。想半天没想明白怎么建。。。
//总的订单表
create table order(
  id number primary key,
  oid number unique,
  note varchar2(),
  ...//省略一些属性

//订单菜表
create table orderdish(
  id number primary key,
  oid number,
  ....
  foreign key(oid) references order(oid) on delete cascade
  ...
)
//订单酒水表。。。跟菜表差不多
现在需求要 记录订单之后修改的信息。。。。网上有人让用触发器实现,可是我查看触发器半天教程还是无从下手

------解决方案--------------------
这个是软件中很基本的日志功能,只要有一个比较完善的日志系统,这个功能都很容易实现。建议不在数据库中用触发器实现。如果要用触发器实现也行,建一个触发器,在触发器中把操作的信息,如增删改的数据写到日志表中。
------解决方案--------------------
:new:cid:=v1+1; --太出心了.., 这么多冒号
------解决方案--------------------
探讨
create or replace trigger trigger_cai
before insert
on cai
for each row
declare
v1 number;
begin
select max(cid) into v1 from cai;
if(v1 i……

------解决方案--------------------
create or replace trigger trigger_cai
before update on cai for each row
begin
  
--用:old和:new 记录修改数据
--用sys_context记录 用户信息
end;