当前位置: 首页 > 知识库问答 >
问题:

关于数据库约束的查询

王俊楚
2023-03-14

我有一个Oracle表,它有10列-col1、col2、COL3...COL10。我的要求是-对于col1、col2、col3的唯一值集,即(col1、col2、col3)只允许col4的唯一值,即使它是多次。例如:如果有10行COL1=3,COL2='A005',COL3=10,则所有10行的col4值应相同。

我如何在Oracle中放置此限制?

共有1个答案

巢皓君
2023-03-14

您可以对三列(co1、col2、col3)设置一个唯一的约束,然后将其作为一个外键放入一个单独的表中(即将col4移到一个不同的表中)。这将消除您当前在col4中获得的重复值(这是一种糟糕的做法--阅读数据库的“规范化”以了解原因)。

因此-对于每个唯一的组合(col1、col2、col3),它将映射到col4的恰好一行-但在一个单独的表中。

例如。在sqlfiddle中:http://sqlfiddle.com/#!4/AD317

编辑:不需要修改表列/架构

 类似资料:
  • 9.4.2.数据库约束 再次运行这个Service,你会发现它执行失败,而在logcat中得到许多SQLException。而这都是数据库约束(database constraint)抛出的异常。 这是因为我们插入了重复的ID。前面从服务端抓取消息数据时,获得了消息的ID字段,并作为主键一并插入本地数据库。但是我们每分钟都会通过getFriendsTimeline()重新抓取最近24小时的20条消

  • 3.移除值事件侦听器和脱机的区别。

  • 我有一个用户创建屏幕,它记录了各种用户详细信息以及名字和手机号码。我有一个对应的用户表,其中名字和手机号码构成一个复合唯一键。此表中还定义了其他完整性约束。 当在创建用户屏幕上输入违反此约束的用户数据时,需要向用户显示“用户友好”错误消息。 当这种违反发生时,我从MySQL数据库中得到的异常是: 有两个选项可以显示有意义的消息(例如:“错误:给定手机号码的用户名已存在,请更改其中一个”)。 选项1

  • 我遇到一个情况,需要根据另一个列值对一个列[属性]强制执行唯一约束。 例如,我有一个像table(ID,EID,Name,ISDeleted)这样的表 ISDeleted只能有一个值null或'y'(active或deleted),并且我想在EID上创建一个唯一的约束,仅当ISDeleted=null时才创建ISDeleted,因为我不关心是否有多个具有相同ID的已删除记录。请注意,EID可以为空

  • 我有一个spring项目,想在数据库中强制一个字段的唯一性,并将错误消息返回给UI。 我已经阅读了这个SO答案,它是有意义的,所以@Col的(唯一=真)使表上的约束,但不强制它。 因此,问题变成了如何创建一个@Unique注释,该注释与数据库进行检查,并在POST处理程序上向BindingResult返回错误消息。 一个例子会很棒。 更新 我尝试了以下方法来制作自定义验证器: 对象(请注意,我添加

  • 我刚接触laravel,尝试存储数据,但不断出现以下错误: 在控制器中的存储方法: 店铺请求: 数据库: 错误指向控制器: 但不确定怎么解决。请帮忙。提前谢谢。