餐厅点餐系统:
有个订单表-->定单对应的菜表,订单对应的酒水表下面就是最恶心的(要求要一个订单的修改的详细记录),详细记录里面有:是顾客、前台还是服务员修改了菜单,添加/删除/修改了 哪些菜或酒水(以及菜或酒水的注释信息),修改了总订单表的备注信息,注释信息,修改时间。想半天没想明白怎么建
//总的订单表
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
  ...
)
//订单酒水表跟菜表差不多
现在需求要 记录订单之后修改的信息。网上有人让用触发器实现,可是我查看触发器半天教程还是无从下手

解决方案 »

  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 is null) then
            :new.cid:=1;
            else
              :new:cid:=v1+1;
            end if;
          end
    我写错了吗???怎么不能自动生成cid呢
      

  2.   

    :new:cid:=v1+1;      --太出心了.., 这么多冒号
      

  3.   

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

  4.   

    create or replace trigger trigger_cai
    before insert
    on cai
    for each row
    declare
    v1 number;
    begin
    select max(cid) into v1 from cai;
      :new.cid:=v1+1;  
    end;
    这样能运行了