如题!
解决方案 »
- ORACLE添加数据库问题
- oracle刚装好,有没有系统库系统表?
- Oracle 高级复制更换IP后复制关系失败!(问题已详细描述,工程上点出现的问题,急!!!在线等待)
- !!!急急急,超难问题,建立快照失败问题,错误提示是“ORA-03113: 通信通道的文件结束”,高手指点呀
- oracle 存储过程运行速度慢
- 两个简单问题啊!!!
- 关于JOB_QUEUE_PROCESSES的值
- JDBC中调用函数的问题。
- 两个字节的byte型数据在oracle中应该存成什么类型?
- java连接oracle数据库报错ntly know of service requested in connect descriptor
- sql优化.....关于in
- 从部分字段记录相同的表中查找只显示其中一条
LZ所说也很有道理,小弟认为就像你所说建立相关序列同时也建立索引,当然库只有100多张表,库并不是很大,建议还是建立主键以及相关索引(项目应考虑PL-SQL 效率嘛)
既然楼主不愿意创建主键,那么想必通过唯一约束和非空约束来替代主键的方式,楼主更不会考虑了,更麻烦,楼主考虑这几种情况么:
1. 如何更新数据库的某一条数据,既不存件主键也不存在唯一约束,楼主如何定位到具体的某一条唯一的记录,特别是经常碰到的问题类似存在则更新不存在则插入这样的问题。如果楼主的系统中不需要唯一的记录,那么在查询结果中,哪条结果才是真正需要的结果如何分辨2. 不存在主键,那么意味着所有列都可以容易更新,也就是说今天看见的数据,明天可以由于误操作或者其他原因不见了,楼主怎么查找类似这样的问题。在存在关联关系的表上,如果更新了有关的字段,而不更新存在关联关系的表的相关字段,那么将来数据核对起来是一件多么困难的事情3. 楼主也许相让程序来实现这个唯一非空限制,那么楼主想过并发操作么,也许两个用户同时在更新/插入,或者由于网络延时或者由于CPU时间片的分配问题,或者其他各种各样的问题,导致同样的记录通过程序的检测进入数据库。4. 楼主考虑过项目过程中,可能出现手工填补数据的问题么,总不能要求手工填补数据的人员每次插入或者更新数据的时候都先查询一次数据库,就算这样还存在并发操作的问题呢,也许两个手工填补数据的人员同时插入同样的记录,或者手工填补的记录和系统插入同样的记录。... 可能的情况太多了,偶说不动了楼主所说的通过程序控制唯一和非空,无非就是存在轮子的时候,重新费力造一个轮子,和花在程序修改、调试的时间上比,增加主键不是更简单的事情么
1. 如何更新数据库的某一条数据,既不存件主键也不存在唯一约束,楼主如何定位到具体的某一条唯一的记录,特别是经常碰到的问题类似存在则更新不存在则插入这样的问题。如果楼主的系统中不需要唯一的记录,那么在查询结果中,哪条结果才是真正需要的结果如何分辨2. 不存在主键,那么意味着所有列都可以容易更新,也就是说今天看见的数据,明天可以由于误操作或者其他原因不见了,楼主怎么查找类似这样的问题。在存在关联关系的表上,如果更新了有关的字段,而不更新存在关联关系的表的相关字段,那么将来数据核对起来是一件多么困难的事情3. 楼主也许相让程序来实现这个唯一非空限制,那么楼主想过并发操作么,也许两个用户同时在更新/插入,或者由于网络延时或者由于CPU时间片的分配问题,或者其他各种各样的问题,导致同样的记录通过程序的检测进入数据库。4. 楼主考虑过项目过程中,可能出现手工填补数据的问题么,总不能要求手工填补数据的人员每次插入或者更新数据的时候都先查询一次数据库,就算这样还存在并发操作的问题呢,也许两个手工填补数据的人员同时插入同样的记录,或者手工填补的记录和系统插入同样的记录。... 可能的情况太多了,偶说不动了楼主所说的通过程序控制唯一和非空,无非就是存在轮子的时候,重新费力造一个轮子,和花在程序修改、调试的时间上比,增加主键不是更简单的事情么