决对没有。就是加1 999 X X也说
violation of primary or unique key constraint "task_detail_pk"on table "task_detail"

解决方案 »

  1.   

    不可能就是加 1 999 X X也报错
    violation of primary or unique key constraint "task_detail_pk"on table "task_detail"
      

  2.   

    检查task_detail的主键是task_id和task_times?
      

  3.   

    检查你的触发器中,是否有插入或修改task_detail的操作?
      

  4.   

    task_detail的主键的确是task_id和task_times。同一个任务可能要好几次完成。所以2个主键能表示出该ID的第几次执行。就在表中就唯一了。task_detail的触发器中只在对系统的NEW表就是SQL SERVER里的系统的insert表做改动。还有就是对task_tree做改动。没有动task_detail的改动。
      

  5.   

    在Interbase/Firebird, 一般是用Generator来作自动加一.
    所以 new.TaskID = Gen_ID(MyGeneratorName, 1).  这个Generator可以配合trigger(Before Update; Before Insert)来完成有关的工作.
    由於Generator是和事务独立工作, 所以就算你Rollback事务, 已发出的ID也不能回滚的. 从而产生独立的序号.你的问题多是因为是在多用户在线环境下, 个别用户都不能看到其他用户未commit的更新. 所以当有两个同时的提交, 便会有错误产生.
      

  6.   

    CREATE TRIGGER 名 on task_detail
    INSTEAD OF INSERT
    AS
    BEGIN
      INSERT task_detail select task_id,(SELECT isnull(max(task_times),0)+1 FROM task_detail where task_id=inserted.task_id),task_begin,tesk_end from inserted
      update task_tree set task_total_times=task_total_times+tem.num from (select task_id,sum(1) num from inserted) tem where task_tree.task_id=tem.task_id
    END
      

  7.   

    to erickleung() 
    1.我还在试单机。
    2.我不知道generator是中文名是什么。有什么名。
    照着做了但在FB1.5里出错。第3步报错。dynamic SQL error code=-206 column unknown GFWF1CJ_ID at line4 ,column1使用Generator:教程:A:创建一个TABLE "CLIENTJOB":
    CREATE TABLE "CLIENTJOB" 
    (
        "CJ_ID" INTEGER,
        "CJ_CLIENTID" INTEGER,
        "CJ_DATE" DATE,
        "CJ_STARTTIME" TIME,
        "CJ_ENDTIME" TIME,
        "CJ_TYPE" VARCHAR(36),
        "CJ_XGRW" VARCHAR(36),
        "CJ_TOPIC" VARCHAR(120),
        "CJ_CONTENT" BLOB SUB_TYPE 0 SEGMENT SIZE 80,
        "CJ_TIME" COMPUTED BY (CAST(((CJ_ENDTIME-CJ_STARTTIME)/60) AS NUMERIC(8, 3)))
    );
    B:创建Generator "GEN_CLIENTLIST":
        CREATE GENERATOR "GEN_CLIENTLIST";
    C:创建Trigger
    CREATE TRIGGER "TRIG_CLIENTJOB_BI" FOR "CLIENTJOB" 
    ACTIVE BEFORE INSERT POSITION 0
    AS
    BEGIN
        //数据新增时,CJ_ID自动加1
        NEW.CJ_ID=GEN_ID(GEN_CLIENTJOB,1);///这里GEN_CLIENTJOB怎么冒出来的
    ENDto 大力
    强。好长的代码。我研究研究。
      

  8.   

    大力的代码,语法检查没结果,没说错。也没说对。存盘时说task_detail未知。晕倒。查过明明有这个表的呀。颜色还变了。
      

  9.   

    CREATE TRIGGER NEWNEW FOR TASK_DETAIL
    ACTIVE BEFORE INSERT POSITION 0
    AS
         declare variable t Integer;
    begin
      INSERT into TASK_DETAIL (task_id,task_times,task_begin,task_end)
      select task_id,
      (SELECT isnull(max(task_times),0)+1  FROM TASK_DETAIL  where TASK_DETAIL.task_id=new.task_id),
      task_begin,
      task_end
      from new
    end
    这样还报错。:(说END那里有错
      

  10.   

    想找小姐吗,来水园吧!
    这里有老龟奴zyq_123雍亲正当大版主,还有人称辣花摧魔前青楼名妓smoke当镇小版主,肯定能满足您的需要!!!快来吧~~~~~~
      

  11.   

    Triggers on Table TASK_DETAIL:
    CHANGE, Sequence: 0, Type: AFTER INSERT, Active
    ASbegin
    update task_tree
    set task_tree.task_total_times=task_tree.task_total_times+1 where task_tree.task
    _id=new.task_id;