请教各位:
      比如我要建一张表 LaptopComputer,在这张表中的主关键字是lpid,我希望这个主关键字是自增的,就是每插入一次,就自动增加,同时我希望它增加的形式不是单纯的数字,而且类似lp000001,lp000002这种形式,那应该怎么办?
求解~!
对您的参与不胜感激!谢谢

解决方案 »

  1.   

    建议在你的表中仍然使用 1,2,3这种形式的递增,然后在查询中通过concat('lp',id) 来显示。 这种方法最稳定可靠。如果一定要以 lp000001,lp000002这种形式 则需要以触发器来实现,但对并发的控制不好。
      

  2.   

    谢谢你的建议。现在我的情况是这样,我这里有4表,
    create table Laptop(lpid,.....)
    create table Desktop(dpid.....)
    create table NetBook(nbid.....)
    create Price
    (Price id....
    Productid这个属性既是上面的lpid,dpid,nbid假如这三个属性都是1,2,3等自增,那么必将会有重复所以说,在查询的过程中改变,是行不通的。
    至于触发器,因为我自己对数据库不是很了解,第一,就是我不会写触发器,第二就是您讲的并发控制,我感觉这个还好,第三个,就是假如大量应用触发器,那么响应速度应该是会变慢的吧
    再次感谢您
      

  3.   

    一种方法就是price ( priceID, categoryID, pcid)
    这样,由 categoryID, pcid 形成主键。 ('D',1), ('L',1)
      

  4.   

    谢谢您的提示
    您的意思是,使用组合式的主键,即(categoryID,pcid),不好意思,我前面叙述题目的时候没有说详细,是这样的,每一种电脑,要在不同的卖场里出售,所以呢,没一种电脑对应多个卖场和多个价格,这里是个1:N的映射,所以,不能使用这种主键
    谢谢您
      

  5.   

    没一种电脑对应多个卖场和多个价格,这里是个1:N的映射create table PCprice (
      categoryID  char,
      pcid   int,
      salesAreaID  int,
      price decimal(10,4),
      primary key (categoryID,pcid,salesAreaID)
    );