table﹕
         u_styleid [char] (15), pk   --類型編號
u_worktype [char] (1), pk   --工作種類
u_no [char] (3),       pk   --序號
u_work [nvarchar] (200),    --工作名稱
u_price [numeric](10,4)     --價格3個主鍵
         insert 一條新紀錄
         要求 u_styleid ,u_worktype 可以重復﹐u_no 不重復
 
如       ---u_styleid --  u_worktype ---  u_no --  u_work  --   u_price --
             A301            1           001        ABC           0.2001
             A301            1           002       ACD           0.2002   (新插)
             A301            4           001       AEF           0.0023
             A301            4           002       ATT           0.1902   (新插)這個怎么寫﹖
弄出來就給分

解决方案 »

  1.   

    如       ---u_styleid --  u_worktype ---  u_no --  u_work  --   u_price -- 
                 A301            1           001        ABC           0.2001 
                 A301            1           002       ACD           0.2002   (新插) 
                 A301            4           001       AEF           0.0023 
                 A301            4           002       ATT           0.1902   (新插)要求 u_styleid ,u_worktype 可以重復﹐u_no 不重復??
    你的数据里面 u_no 就有重复的呢? 不明白你的意思
      

  2.   

    在插入前做个判断?看要插入的u_no 存在不存.
      

  3.   

    比如表中原來有行數據:
      A301(u_styleid )  1(u_worktype)  001( u_no)   ABC(u_work)    0.2001(u_price)  
    我要新增加一行
      A301(u_styleid )  1(u_worktype)  002( u_no)   ABC(u_work)    0.2090(u_price)表中
     A301(u_styleid )  1(u_worktype)  001( u_no)   ABC(u_work)    0.2001(u_price)
     A301(u_styleid )  1(u_worktype)  002( u_no)   ABC(u_work)    0.2011(u_price)--新加的行
     A301(u_styleid )  2(u_worktype)  001( u_no)   ABC(u_work)    0.2022(u_price)
     A301(u_styleid )  2(u_worktype)  002( u_no)   ABC(u_work)    0.2033(u_price)--新加的行
      

  4.   

    设置主键:u_styleid ,u_worktype﹐u_no 
    设置唯一索引: u_no 这样,你就不可能插入重复的 u_no 
      

  5.   

    估计楼主的意思是,自动取得新增记录的u_no  
      

  6.   

    大概:create proc pr_InsertRecord
    @u_styleid [char] (15),
    @u_worktype [char] (1),
    @u_work [nvarchar] (200),
    @u_price [numeric](10,4)
    asdeclare @u_no [char] (3),
    selet @u_no=right('000'+cast(cast(max(u_no) as int)+1 as varchar),3) 
    from [TABLE]
    where u_styleid=@u_styleid and
    u_worktype=@u_worktypeif @u_no is null
    set @u_no='001'insert [TABLE] (
    u_styleid,
    u_worktype,
    u_no,
    u_work,
    u_price
    )
    values (
    @u_styleid,
    @u_worktype,
    @u_no,
    @u_work,
    @u_price
    )go
      

  7.   

    大概: 
    SQL codecreate proc pr_InsertRecord
    @u_styleid [char] (15),
    @u_worktype [char] (1),
    @u_work [nvarchar] (200),
    @u_price [numeric](10,4)
    asdeclare @u_no [char] (3),
    selet @u_no=right('000'+cast(cast(max(u_no) as int)+1 as varchar),3) 
    from [TABLE]
    where u_styleid=@u_styleid and
    u_worktype=@u_worktypeif @u_no is null
    set @u_no='001'insert [TABLE] (
    u_styleid,
    u_worktype,
    u_no,
    u_work,
    u_price
    )
    values (
    @u_styleid,
    @u_worktype,
    @u_no,
    @u_work,
    @u_price
    )go