oracle 表一的A、B两个字段是联合主键,表二使用表一的A字段作为外键,这样可以吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 表一的A、B两个字段是联合主键,表二使用表一的A字段作为外键,这样可以吗?相关的知识,希望对你有一定的参考价值。

表二单独使用表一的A字段。

不可以。
从定义看,外键至少需要父表上A列/A字段是唯一的(UNIQUE约束),如果A、B字段作为联合主键,则不能保证A字段唯一性约束。有矛盾,所以不可以。
参考技术A oracle 表一的A、B两个字段是联合主键,
表二使用表一的A字段作为外键 没意义
参考技术B 数据库上不可以,但你自己的业务系统却可以这样。

从表一的比较更新表二,bigQuery

【中文标题】从表一的比较更新表二,bigQuery【英文标题】:Update table two from comparison on table one, bigQuery 【发布时间】:2019-12-07 06:00:56 【问题描述】:

我正在尝试使用标准 SQL 更新 bigquery 中的表,但出现以下错误:查询错误:无法在 [81:7] 处使用不可比较的类型 STRING 和 INT64 执行 IN 子查询

本质上,我有两张桌子。表(a)和表(b)。当在表(b)中而不是表(a)中找到特定记录(flight_number)时,我正在尝试更新表(b)中的列(布尔列)。

UPDATE `HTZ_Analysis.airport_flightrecord` as tableb
SET table(b).In_Airport = False 
WHERE table(b).flight_number NOT IN (SELECT 1 
                                   FROM table(a)
                                  )

【问题讨论】:

【参考方案1】:

检查您要比较的列的表架构。似乎列类型不同,一种是 STRING,另一种是 INT64。我想可能有些航班号会包含字母,所以我会在两列中将change the column type 转换为 STRING。那么它们应该具有可比性。

【讨论】:

以上是关于oracle 表一的A、B两个字段是联合主键,表二使用表一的A字段作为外键,这样可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

laravel 关联查询 表一、表二、两个表的关联表

oracle 外键 删除

sq 语句 查询两个表 并按时间字段排序

oracle怎么核对两个表的数据是不是一致

在Oracle数据库中创建一个表,用两个键做联合主键,sql语句该怎么写?

SQL SERVER中,如何把一个表中的数据导入到另一个表中?