unique属性标识字段的唯一值有两个问题使用的这个属性,不知道是否恰当table:
id    name   age
1      kaka   24
2      lala   26
3      lala   261.向一个表中插入数据,由于程序的问题,插入了两次'lala',要求是name字段值不能有重复,由于程序调试困难,未找到重复插入问题点,所以采用把name设置为unique.这样就保证了name的唯一.这样解决在性能或者数据安全方面是否能接受?2.还是向这个表中插入数据,我先将name设置为unique,因为已经有一条记录'kaka',所以我再次插入'kaka'将不会有新记录,通过这种方式,我可以省略一步判断:即在插入'kaka'前先执行一次存在性判断.本质是通过unique的特点来省去一步判断操作,这样解决在性能或者数据安全方面是否能接受?

解决方案 »

  1.   

    你的方法一,方法二的差别是什么?好象都是“把name设置为unique”性能或者数据安全方面是否能接受 可以接受,本身表的设置就应该和实际相同,如果name 是 unique ,就加具unique 限制。
    性能上,由于多了一个name上的unique索引,帮而插入时的速度会有一点点影响。但同时一但你有基于name 的查询则速度有显著的提高。安全性上来说, 保密性不受影响,完整性有所提高,可靠性不受影响。
    
      

  2.   

    re:ACMAIN_CHM "你的方法一,方法二的差别是什么?"
    其实是两个不同的问题,因为都涉及unique,所以用一个表来举例第一个问题是由于程序问题,向一个表中一次性插入了两条相同的name,由于暂时找不到程序问题根源,所以想临时用unique来限制重复插入,解决这个问题.实际这样做也给解决了.感觉还可以,就不想改回来了.有数据库的字段限制特点不是很好么?就来问问能不能这样用.
    第二个问题是插入数据问题,比如注册新用户,总是要先判断该用户是否已经被注册,如果使用了unique,那么直接插入就可以了,不用判断了.如果有重复的肯定插不进去.节省一步数据库操作,不知道这么做会不会有问题.
      

  3.   

    1.向一个表中插入数据,由于程序的问题,插入了两次'lala',要求是name字段值不能有重复,由于程序调试困难,未找到重复插入问题点,所以采用把name设置为unique.这样就保证了name的唯一.这样解决在性能或者数据安全方面是否能接受?可以,不过建议用USERID,即每一个人一个ID,没有重复2.还是向这个表中插入数据,我先将name设置为unique,因为已经有一条记录'kaka',所以我再次插入'kaka'将不会有新记录,通过这种方式,我可以省略一步判断:即在插入'kaka'前先执行一次存在性判断.本质是通过unique的特点来省去一步判断操作,这样解决在性能或者数据安全方面是否能接受?如果是MYSQL,用REPLACE既可,有重复,用最新的替换
      

  4.   


    原来是两个问题,不是两个方案。二个问题的回答是 - 可以这样通过unique来实现这种约束。对系统的影响参见一楼的说明。