“此列列表没有匹配的唯一键或主键”。但主键确实存在

2024-04-09

所以我正在练习一些 sql 编码来进行测试,但我无法获得外键来引用主键。

这是不起作用的表:

CREATE TABLE ASSIGNMENT(
ASSIGN_ID NUMBER(2) NOT NULL,
START_DATE DATE,
END_DATE DATE,
BUDGET NUMBER (10,2),
MANAGER_ID NUMBER(2),
  PRIMARY KEY (ASSIGN_ID,MANAGER_ID),
  FOREIGN KEY (MANAGER_ID) REFERENCES EMPLOYEE(EMP_ID)
);

这是它引用的表:

CREATE TABLE EMPLOYEE(
EMP_ID NUMBER(2) NOT NULL,
NAME VARCHAR(40),
OFFICE VARCHAR(20),
EXPERT_ID NUMBER(2),
  PRIMARY KEY (EMP_ID,EXPERT_ID),
  FOREIGN KEY (EXPERT_ID) REFERENCES EXPERTISE(EXPERT_ID)
);

每当我尝试运行该脚本时,它总是会返回:

错误报告 -
SQL 错误:ORA-02270:此列列表没有匹配的唯一键或主键
02270. 00000 - “此列列表没有匹配的唯一键或主键”
*原因:CREATE/ALTER TABLE 语句中的 REFERENCES 子句
给出一个没有匹配的唯一或主要的列列表 引用表中的键约束。
*操作:使用 ALL_CONS_COLUMNS 查找正确的列名称 目录视图

我环顾四周,但似乎找不到问题。任何帮助,将不胜感激。

这是完整的代码(尚未测试最后一个表):

CREATE TABLE EXPERTISE(
EXPERT_ID NUMBER(2) NOT NULL,
DESCRIPTION VARCHAR(50),
HOURLY_RATE NUMBER(3,2),
CHARGE_RATE NUMBER(3,2),
  PRIMARY KEY(EXPERT_ID)
);

CREATE TABLE EMPLOYEE(
EMP_ID NUMBER(2) NOT NULL,
NAME VARCHAR(40),
OFFICE VARCHAR(20),
EXPERT_ID NUMBER(2),
  PRIMARY KEY (EMP_ID,EXPERT_ID),
  FOREIGN KEY (EXPERT_ID) REFERENCES EXPERTISE(EXPERT_ID)
);

CREATE TABLE ASSIGNMENT(
ASSIGN_ID NUMBER(2) NOT NULL,
START_DATE DATE,
END_DATE DATE,
BUDGET NUMBER (10,2),
MANAGER_ID NUMBER(2),
  PRIMARY KEY (ASSIGN_ID,MANAGER_ID),
  FOREIGN KEY (MANAGER_ID) REFERENCES EMPLOYEE(EMP_ID)
);


CREATE TABLE ALLOCATION(
EMP_ID NUMBER(3) NOT NULL,
ASSIGN_ID NUMBER(3) NOT NULL,
DAYS_WORKED_ON DATE,
HOURS_WORKED_ON DATE,
  PRIMARY KEY(EMP_ID,ASSIGN_ID),
  FOREIGN KEY(EMP_ID) REFERENCES EMPLOYEE(EMP_ID),
  FOREIGN KEY(ASSIGN_ID) REFERENCES ASSIGNMENT(ASSIGN_ID)
);

我正在使用 Oracle SQL Developer 来实现


*原因:CREATE/ALTER TABLE 语句中的 REFERENCES 子句给出的列列表没有匹配的唯一键或主键 引用表中的约束。

问题是EMP_ID(本身)不是表的主键或唯一键Employees,相反,你有一个复合主键(EMP_ID, EXPERT_ID).

要解决该问题,请执行EMP_ID的主键Employees表(这看起来很直观,因为每个员工都应该有一个唯一的 ID)或添加一个单独的唯一约束EMP_ID.

正如评论中所指出的,如果您这样做EMP_ID主键,那么(EMP_ID, EXPERT_ID)通过扩展也将是独一无二的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“此列列表没有匹配的唯一键或主键”。但主键确实存在 的相关文章

  • 将上一行值减去当前行

    我有下表 id value acc no 1 12 1 2 14 1 3 15 1 4 10 2 5 16 2 6 19 1 7 7 3 8 24 2 预期产出 id value acc no result 1 12 1 12 curren
  • 在 pymssql 中重复死锁查询后更新失败

    我将 SQL Server 与 pymssql 一起使用 发现一个特别复杂的 SELECT 查询偶尔会被选为死锁受害者 因此 我将其包装在 while 循环中 以便在发生这种情况时重试事务 大致如下 while True try curso
  • 使用动态 SQL 检索表结构

    我正在迁移数据库 并尝试将表结构信息检索到单个行项目中以进行机器处理 由于技术原因 现有的迁移工具无法使用 必须采用这种方式处理 我已在多个表上成功运行以下查询 SELECT LISTAGG column name data type da
  • oracle中的数字格式

    Hai 我的数字格式有问题 我正在使用 oracle 我在数据库中有一个数字字段 但是当我检索它时 我需要将其视为浮点数 例如 在检索时 现在我得到的结果为 200 DR 借方的 DR 手动给出 现在我需要得到 200 00 DR 的结果
  • 我如何(或可以)在多个列上选择 DISTINCT?

    我需要从表中检索所有行 其中两列的组合都不同 因此 我希望同一天没有任何其他销售的所有销售都以相同的价格进行 基于日期和价格的唯一销售将更新为活动状态 所以我在想 UPDATE sales SET status ACTIVE WHERE i
  • 如何设置报表服务器实例?

    我正在尝试设置 Microsoft SQL Server Reporting Services 我打开 Reporting Services 配置管理器 它要求输入服务器名称 问题是 我不知道服务器名称 因为据我所知还没有设置报表服务器 那
  • 如何将 SELECT...INTO 与 JOIN 一起使用?

    我有以下示例代码 DECLARE myRow table rowtype myVar table2 column type BEGIN SELECT table col1 table col3 table col4 table2 colum
  • PHP数组转SQL

    array array 53 gt array num gt 20 name gt aaa 10 gt array num gt 20 name gt bbb sql 插入数据 id num name 值 53 20 aaa 10 20 b
  • 从文件执行db语句

    我在我的应用程序中使用嵌入式 Apache derby 我有一个名为的 SQL 脚本创建的数据库 sql创建数据库中的所有表并用初始数据填充它 例如 SET SCHEMA APP CREATE TABLE study study id bi
  • 带有多表查询的 SQL Join 版本的 Djangoviews.py

    需要一些有关 Django 版本的 SQL 多表查询的帮助 该查询使用 3 个表来检索餐厅名称 地址Restaurants table和美食类型来自Cuisinetypes table 所有这些都基于通过 URL 传递的菜品名称 菜品 ID
  • MYSQL枚举:@rownum,奇偶记录

    我问了一个关于为查询结果创建临时 虚拟 ID 的问题 mysql 和 php 查询结果的临时 虚拟 ID https stackoverflow com questions 4063998 mysql php temporary virtu
  • 如何在网格视图中突出显示文本的结果? [复制]

    这个问题在这里已经有答案了 可能的重复 如何突出显示某个单词 https stackoverflow com questions 9546761 how can i highlight a word 我有一个网格视图和一个文本框 用于从列中
  • 如何根据 Postgres 中的过滤条件更新深度嵌套的 JSON 对象?

    我有一张桌子mapping transform带有 JSONB 列content json包含类似的东西 meta mapping src up dest down 我想添加一个新的 JSON 条目 rule names some name
  • mySQL中外键必须是索引吗?

    我刚刚自己创建了第一个 mySQL 表 除了使用 Joomla Wordpress 等 我是 MS SQL 开发人员多年 但通常我可以轻松地在 MS SQL 中创建外键 但我遇到了困难或这里缺乏知识 这是我的表格 users user id
  • C# 和 SQL Server 中嵌套 using 的用法

    这个线程是一个延续是否有理由在 C 中使用子句检查多个内部的 null https stackoverflow com questions 2220422 is there a reason to check for null inside
  • 无法从 Windows 服务连接到 Oracle(错误:ORA-12154: TNS: 无法解析服务名称 (12154))

    最新更新 2011 年 11 月 2 日上午 9 点 我尝试从服务运行 tnsping 它有效 但是 当我尝试连接时 仍然收到错误 12154 我现在完全困惑了 我不明白 tnsping 如何正常工作 但连接无法解析服务名称 由于某种原因
  • 实体框架可以在本地工作,但不能在 azure 上工作

    我有一个在本地完美运行的网络项目 但是 当我更改 Azure 上发布的网站中的连接字符串以连接到 SQL Azure 上的数据库时 它将开始出现此错误 System Data Entity Infrastructure Unintentio
  • 为什么这个简单的 MySQL 查询不返回该行?

    我在表中有一行users与用户名test 但由于某种原因 此查询返回空结果集 SELECT id FROM users WHERE username test AND id null 但是 如果我删除 id null段 查询返回结果id 1
  • 如何使用 Linq to SQL 从存储过程中检索多行?

    我最近开始使用 Linq to SQL 想知道如何通过执行存储过程来获取多行 这是我想要使用的一个简单的 sp CREATE PROCEDURE gsp ftsmultiple SearchKey varchar 100 AS BEGIN
  • 处理ORACLE异常

    我需要处理ORA 01400 错误 http www techonthenet com oracle errors ora01400 php 无法使用异常句柄将 NULL 插入 SCHEMA TABLE NAME COLUMN NAME O

随机推荐

  • 在 Android 中使用 Service 作为单例

    创建一个不好的做法吗 Service作为单身人士工作 我的意思是一个Service它永远不会停止 并且包含一些其他引擎和Activities会使用 所以Service可能有类似的东西 public class CustomService e
  • 对空间数据使用简单的 for 循环

    抱歉 这将是一个 for 循环 101 问题 我正在努力编写一个简单的 for 循环来根据经度纬度数据生成城市之间的距离表 locations lt read csv distances csv Locations 返回下表 City Ty
  • 具有自由 CORS 政策的公开托管图像? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在做一些将图像加载到画布上的测试 并且正在使用私下里在我们的 aws cdn 上托管图像 这个 c
  • 如何找到 ROI 并检测内部标记?

    我是计算机视觉的初学者 我有一个关于检测和跟踪的问题 我想检测下图中的白色矩形 以确定感兴趣的区域并检测红色标记的轮廓 但我不想利用颜色信息来检测标记 谁能给我关于如何做到这一点的建议 如果您只想检测圆圈 则可以使用经过调整的霍夫变换 ht
  • 具有有序索引的 R 向量-向量匹配

    这里我有两个字符串向量 它们的顺序很重要并且无法更改 vec1 lt c carrot carrot carrot apple apple mango mango cherry cherry vec2 lt c cherry apple 我
  • 可通过属性名称或索引选项访问的结构

    我对 Python 非常陌生 并试图弄清楚如何创建一个具有可通过属性名称或索引访问的值的对象 例如 os stat 返回 stat result 或 pwd getpwnam 返回 struct passwd 的方式 在试图弄清楚这一点时
  • alloca可以完全替代吗?

    我读过很多地方alloca已过时 不应使用 而应使用可变长度数组 我的问题是这样的 是alloca完全可以用变长数组代替 在我的特定实例中 我有一些看起来像这样的东西 typedef struct int value size t size
  • 如何在 Kotlin 中编写以下代码来实现回调

    我如何像java一样用Kotlin编写 Callback callback new Callback Override public void getCallback ServerResponse serverResponse var ca
  • 基于 RCP 的应用程序的 P2 更新失败

    我尝试通过 P2 更新站点更新基于 Eclipse RCP 3 5 的应用程序 该应用程序包含两个功能 产品是由Eclipse Buckminster P2 更新站点的创建是产品构建的一部分 当通过菜单开始更新时 Update gt Che
  • 为什么这个未使用的 self.hash 方法会导致“无法将字符串转换为整数”错误?

    我正在跑过Lynda Rails 3 教程 http www lynda com Ruby on Rails 3 tutorials essential training 55960 2 html 在某一时刻 在名为 access cont
  • 如何检测重复数据?

    我有一个简单的联系人数据库 但用户输入重复数据时遇到问题 我已经实现了一个简单的数据比较 但不幸的是 输入的重复数据并不完全相同 例如 姓名拼写错误 或者一个人输入 Bill Smith 另一个人输入 William Smith 表示同一个
  • 使用 $(function 等启动 javascript 代码

    我正在研究 Backbone 和来自的待办事项示例应用程序http todomvc com http todomvc com 我注意到有 3 种方法可以在文件中启动代码 function code here function code he
  • Swift 3 LPCM 录音机 |错误:kAudioFileInvalidPacketOffsetError

    下面的录音机仅在第一次时有效 如果您尝试第二次录音 则在尝试 AudioFileWritePackets 时会出现错误 kAudioFileInvalidPacketOffsetError 知道为什么会发生这种情况吗 先感谢您 存储库位于此
  • Spring & JPA:按需创建数据库模式和表

    JPA Spring 是否有可能在运行时创建 删除具有自定义名称和相应表 由 Entity 注释给出 的数据库模式 例如当用户按下按钮时 我只知道关于javax persistence schema generation属性 它们在我的应用
  • 带圆角和锯齿状弧形边框的正方形

    我想知道是否可以用纯 CSS 制作一个带有圆角和缩进边框的正方形 目前我有这个 custom square position relative display block width 75px height 75px border 2px
  • goimports 需要忽略供应商包

    我正在尝试实施dep在我的项目中 这一切都运行良好 但它还添加了一个供应商目录 我现在需要更新我的工具以忽略此目录 否则我提供的软件包将被修改 或者我会收到警告误报 我目前正在使用以下工具 goimports w go vet go lin
  • 将 DataGridView 导出到 Excel 的简单方法

    我正在尝试将 DataGridView 数据复制到 Excel 并且使用以下代码 public static void ExportToExcel DataGridView dgView Microsoft Office Interop E
  • 如何防止对象被垃圾收集?

    如何防止对象被垃圾收集 是否有任何通过最终确定或幻像引用或任何其他方法的方法 我在一次采访中被问到这个问题 面试官建议finalize 可以使用 保留一个参考 如果您的对象过早被收集 则表明您的应用程序设计中存在错误 垃圾收集器仅收集应用程
  • HTML5 Canvas 沿着带有坐标的路径拖动图像

    是否可以拥有一个坐标数组并仅沿着这些坐标拖放图像 我想只使用 javascript 而不使用 javascript 库 我一直在摸不着头脑 一直在谷歌上搜索这个问题 但找不到如何做到这一点或者是否可能 Demo http jsfiddle
  • “此列列表没有匹配的唯一键或主键”。但主键确实存在

    所以我正在练习一些 sql 编码来进行测试 但我无法获得外键来引用主键 这是不起作用的表 CREATE TABLE ASSIGNMENT ASSIGN ID NUMBER 2 NOT NULL START DATE DATE END DAT