问题标签 [foreign-keys]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1520 浏览

c# - C# MySqlCommand 多次删除外键问题

我希望有人可以帮助我解决这个问题。

我有一个小应用程序来“修补”我们的数据库,因为我们需要增强功能并修复错误。它读取只是带有 SQL 语句的文件的补丁,并进行一些内部管理,查询数据库并应用尚未应用的补丁。无论如何,这是我们拥有的解决方案,无论好坏,它都运作良好......直到现在。

我发现有必要删除许多表上的现有外键约束,并用 ON DELETE CASCADE 子句代替它们当前拥有的 ON DELETE RESTRICT 子句。这个想法是删除这些其他表引用的表上的 PK 将导致所有其他表的清理。

本质上,补丁文件中包含以下内容:

和相关的

在 C# 端,当我传递这个字符串(补丁文件中的 SQL 语句)时,如下所示:

我收到以下错误消息:

将“.\mydb\table2”重命名为“.\mydb#sql2-6a8-3f”时出错(错误号:152)

只有当我在字符串中有两个 DROP FOREIGN KEY 行时,我才会得到这个。

我已经确保 DROP 行上列出的键是键而不是列名,并且其他所有内容(至少对我来说)都可以。

我在一个 MySqlCommand 中包含了多个 SQL 语句并且没有任何问题,所以我有点沮丧。

我可以获取相同的文件并将其从命令行通过管道传输到 mysql.exe,它工作正常,因此在处理语句的方式上似乎有所不同。

有人对此有任何想法吗?

谢谢,马特

0 投票
1 回答
2356 浏览

ado.net - 如何获取 ADO.NET 实体模型中的外键?

我有 3 个表(以及实体模型中的相应实体) Game: Id - primay key ... 其他列

Player: Id - 主键 ... 其他列

GamePlayer (一个玩家可以参与很多游戏) GameId --> 来自 Game PlayerId 的外键 --> 来自 Player 的外键 ... 其他列

在我的代码中,我可以通过其他方式使用 gameId 和 playerId。使用这个我想知道玩家(playerId)是否正在参与特定的游戏(gameId)。所以我这样做:(实体是我的上下文对象)

IQueryable query = entity.GamePlayer.where(gp => ((gp.Game.Id == gameId) && (gp.Player.Id == playerId))) 如果查询返回一行,那么我知道该玩家正在参与在那场比赛中。

我阅读了多个关于实体引用的 MSDN 博客,但我很困惑。似乎 MSDN 建议我首先必须检查 IsLoaded 的 EntityReference 对象,如果没有加载,我必须加载实体,然后我才应该在查询中使用它。

GamePlayer 确实有 GamePlayer.GameReference 和 GamePlayer.PlayerReference,但我无法检查是否加载了引用,因为我手头没有 GamePlayer 对象。GamePlayer 表包含两个 1...* 关系,仅此而已。我必须仅使用 GameId 和 PlayerId 查询 GamePlayer。我在这里做错了什么?

我应该改为获取玩家(或游戏)对象(使用他们的 ID)并检查 GamePlayer 实体集合吗?Sql 就是这么简单。如果这太天真了,对不起,我很难将我的 sql 查询转换为实体查询。

0 投票
1 回答
4712 浏览

django - Django 表单 - 就地编辑来自反向外键连接的数据

我有一个人表和电话表。Phone 表在 Person 表中有一个外键,它是一个自增 ID。每个人可以有任意数量的电话号码。有没有办法让我创建一个 Django 表单来输入电话号码,同时创建一个新的 Person 条目并将它们与现有的 Person 条目一起编辑?

0 投票
1 回答
66895 浏览

mysql - MySQL外键允许NULL?

我正在拼凑一个图像网站。基本架构非常简单的 MySQL,但我在尝试表示与图像关联的可能管理标志时遇到了一些麻烦(“不适当”、“受版权保护”等)。我目前的想法如下:

(为了便于阅读而被截断;我发誓,各种外键和索引都是有序的)

tblImageFlags.flagTypeID在标志类型的查找表上是外键的,你可以想象tblImageFlags.resolutionTypeID 应该是外键的luResolutionTypes.resolutionTypeID. 手头的问题是,当第一次发出标志时,没有逻辑解析类型(我会声明这是一个很好的用途NULL);但是,如果设置了一个值,它应该是查找表的外键。

我找不到针对这种情况的 MySQL 语法解决方法。它存在吗?最好的亚军是:

  • 添加“无节制”分辨率类型
  • 添加一个NULL条目luResolutionTypes.resolutionTypeID(这甚至可以在AUTO_INCREMENT列中工作吗?)

感谢您的洞察力!

PS Bonus 指向谁告诉我,在数据库的情况下,它是“索引”还是“索引”。


跟进:感谢 Bill Karwin 指出表结构中的语法错误(NOT NULL如果您希望允许,请不要将列设置为NULL!)。一旦我有足够的业力给你这些奖励积分,我会:)

0 投票
3 回答
9786 浏览

sql - 您可以在 SQLServer 2k5 中的链接服务器表的视图上使用外键吗?

我有一个带有链接服务器的 SQLServer,它连接到其他地方的另一个数据库。我在该链接服务器上创建了一个视图

我想以下

但这会产生错误:“外键 'fk1_baz_to_foo' 引用了不是用户表的对象 'dbo.vw_foo'。”

如果我尝试使用以下方法将外键直接放在表上

然后我收到以下错误:

对象名称“LINKEDSERVER.RemoteDatabase.dbo.tbl_bar”包含的前缀数量超过了最大数量。最大值为 2。

有什么办法可以达到同样的效果吗?

0 投票
4 回答
9297 浏览

sql - SQL Server 2000 - 查询表的外键关系

与查询表的外键关系几乎相同,但适用于 SQL Server 2000

对于给定的表“foo”,我需要一个查询来生成一组具有指向 foo 的外键的表。

0 投票
7 回答
69168 浏览

sql-server - 我可以有一个外键引用 SQL Server 视图中的列吗?

在 SQL Server 2008 中并给出

是否可以定义TableZ(A_or_B_ID, Z_Data)这样的Z.A_or_B_ID列被限制在中找到的值ViewC?这可以通过针对视图的外键来完成吗?

0 投票
2 回答
265 浏览

sql-server-2005 - 更改多个外键以指向新表

在 MS SQL Server 2005 上,我有一个要替换的表。许多其他表都有对此表的外键引用。有没有我可以运行的脚本来简单地将所有这些引用从旧表滚动到新表?

还是我必须仔细检查并专门删除这些外键中的每一个,并为每个外键编写一个新键?

0 投票
2 回答
239 浏览

mysql - 更新、外键约束和空值

我正在用 C# 生成一个数据模板。在这个精彩网站上的好人的帮助下,我已经设法处理了几乎所有问题。这应该是最后一个问题。因为它是我正在处理的模板,所以我想要表中的每个字段,包括空值。我在如何通过添加 (object)this.field 来更新空值方面得到了帮助?DBNull.Value 但我有一个外键字段,即使当我查看数据库时它显示为 null,但当我提取记录时,值变为 0。当我尝试更新此字段时,它说我违反了外键约束。我该如何解决这个问题?我认为空解决方案会起作用,但它不显示为空,它显示为 0。

谢谢

0 投票
5 回答
9979 浏览

java - JPA 未生成“在删除集为空时”FK 限制

我有两个相关的类 JPA 注释。警报和状态。一个警报可以有一个状态。

我需要的是能够删除一个状态并将空值“传播”到已删除的状态中的警报。

也就是说,我需要将外键定义为“ on delete set null ”。

例子:

前:

之后(删除id=2的状态)

我正在使用 Hibernate 和 PostgreSQL,从源代码自动生成数据库。我已经尝试了所有可能的 CascadeType 都没有成功。

代码有什么问题吗?可以用 JPA 做到这一点吗?