MySql数据库: 
有一个cure表 
cure_ID  doctor_ID  ear  drug_ID ..... 
1        222          111    22222  ..... 
2        333          222    22221  ..... 
3        444          333    122456  ..... 
4        555          444    123165  ..... 
其中cure_ID是主键 然后我想删除其中的第2条记录,删除后让后面的记录的cure_ID跟着减1即: 
cure_ID  doctor_ID  ear  drug_ID ..... 
1        222          111    22222  ..... 
2        444          333    122456  ..... 
3        555          444    123165  ..... 
用触发器 代码应该怎么写呢?

解决方案 »

  1.   

    --单条删除时
    create trigger tr_de
    on table cure
    for delete
    as
    begin
        declare @i int
        select @i = cure_id from deleted
        update cure 
        set cure_id  = cure_id - 1 
        where cure_id > @cure_id
    end
    go
      

  2.   

    在DOS下输入你提供的语句 系统提示ERROR 1064(42000): you hava an error in your SQL syntax;麻烦在帮帮忙
      

  3.   

    另外 其中的ear 和doctor_ID是外键 分别对应表cow 和表doctor
      

  4.   

    你试试我个写这个触发器:
    delimiter //
    create trigger tg_name after delete on cure
    for each row
    begin 
        declare idDeleted INT default 0;
        select cure_id into idDeleted from deleted;
        update cure set cure_id  = cure_id - 1 where cure_id > idDeleted;
    end;
    delimiter //首先我想这也许是个病例表,如果是的话,那么数据量会很大的,
    采用修改ID的方式达到统一,势必会成为整个系统的性能瓶颈。
    加入是100W条记录级的话,会很慢。
      

  5.   

    不好意思,这个触发器最后那句给你写错了,
    现在修改以下。
    delimiter // 
    create trigger tg_name after delete on cure 
    for each row 
    begin 
        declare idDeleted INT default 0; 
        select cure_id into idDeleted from deleted; 
        update cure set cure_id  = cure_id - 1 where cure_id > idDeleted; 
    end; 
    delimiter ;