1.shortname和songname都是单一的,ID似乎并不是必需的
2.感觉shortname自己一个做主键就可以
3.可以把shortname和songname设定联合索引
4.不知道具体需求,但是最好有添加/更新时间

解决方案 »

  1.   

    如果可以将“把shortname和songname设定联合索引”那多一个ID字段也无所谓了,加上“添加/更新时间”是很有必要的,“设定联合索引”具体怎么操作?
      

  2.   

    ALTER TABLE `table` ADD UNIQUE ( `shortname` , `songname`) 
    ID最好做成自增长的主键,可以做为页面之间传递的参数,保证其唯一性.
      

  3.   

    插入前查询校验仍是比较好的办法
    其次就是设定定段为唯一key
    但这个查询时可能出错,你还得捕捉出错信息
    个人觉得仍是插入前查一下为好
      

  4.   


    没有试过直接在SQL语句进行判断是否重复,还是查询一下好一些。ID阶段,用AUTO_INCREMENT的属性,也就是三楼说的自增长,肯定是唯一的,只不过有时候会中间断掉。
      

  5.   

    直接设定主键或者UNIQUE,不需要在程序里面做什么查询效验!
    如果出错,直接抓取数据库返回的错误信息就可以了。
      

  6.   

    6L的方法是正解。用数据库内置的校验更好。LZ说的问题用联合唯一索引就可以解决了。
      

  7.   

    路过可以建立多一个field, 内容是md5(shortname+songname)
    比较起来也方便。
      

  8.   

    看楼主的字段名称
    应该不需要同时比较3个字段如楼上所说的用UNIQUE就可以
    有重复就会插入失败
      

  9.   

    UNIQUE ( `shortname` , `songname`) 
    我在执行测试是这样的,shortname和songname都相同就不能写入数据库,也就是说,保这两个字段不同时重复,但我要的是任意一个字段都不重复,id那个可以自增长创建这都不是问题了。
    UNIQUE ( `shortname` , `songname`) 
    这句如果存在:
    shortname=nh songname=123456
    插入“shortname=nh songname=你好”也成功,这就不能保证这两这段任意一字段都不重复了?
    郁闷,还是没解决,大家帮再想想。。先谢谢了!
      

  10.   

    在shortname和songname上各建一个唯一索引啊,楼上的同学已经说得很清楚了