问题标签 [referential-integrity]

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 回答
77 浏览

database - 确保表中列之间的引用完整性

目前我有一个具有以下格式的表格模型:

标准(criteria_id,criteria_name)

标准数据(标准ID,值)

我打算将与日期相关的信息存储到表中,因为一个标准(日期标准)可能只包含标准数据表中的单个日期,而其他标准数据可能是单独行中该日期的股票价格。(另一个复杂之处在于:股票的名称也是一个标准)

我的问题:

我怎么可能确保对于特定日期和股票名称(另外 2 个单独的标准和行)只能将 1 个价格(单行标准)输入到表格中。

我真的不想在 App 层强制执行这一点,所以我主要是在寻找 DB 层解决方案(如果有的话)。

如果建议使用更合适的数据模型,我也愿意被告知废弃我的整个表格模型。

编辑 在得知我的愚蠢行为后(请参阅下面的 dPortas 帖子),我接受这不是明智的选择。我想到了一个新模型:

标准数据(股票名称,价格,高,低,价格,变化)

虽然这就是它的样子,但我认为实际的列名将是一个包含 criteria_id 的标识符。例如,stockname 字段可以是 col_1,high 可以是 col_3,但这将确保我可以在各个列上强制执行完整性。

人们对此有何看法?

0 投票
2 回答
7168 浏览

mysql - 添加行后,如何检查给定行中的引用完整性?

我正在尝试查看是否有一种方法可以在将单行插入 InnoDB 表foreign_key_checks且设置为 0 后检查其引用完整性。

所以给定两个表:

我们对它们运行以下语句:

所以我们在这里放了一些不好的数据——author_id 指的是不存在的 person.id 3。我试图找到一种方法来触发对该行的某种检查,如果存在参考问题,这将引发错误像这个。

我最初尝试采用的方法是使用完全相同的数据更新行。我试过这个:

我预计这会触发一个错误——但是,它没有。由于数据没有改变,显然没有进行完整性检查?例如,将 author_id 设置为 2确实会失败。

那么我的问题是:是否有替代方法可以让我检查给定的行并在出现问题时触发完整性错误?我已经用谷歌搜索了,但我什么也没找到。我想避免检查整个表格,但这可能是唯一的途径。

任何使我无法理解的见解或其他方法将不胜感激。

(如果你好奇我为什么要这样做,那是因为我试图帮助解决 Django 框架中的一个未解决问题,即无法加载具有前向引用的固定装置。建议的解决方案是禁用外键检查当加载完成后加载并重新启用固定装置时.我试图弄清楚如何返回并检查在外键检查关闭时添加的行的引用完整性并引发有问题就报错。)

0 投票
1 回答
295 浏览

mysql - 添加和删​​除参照完整性约束 - 自动

是否有 Rails gem、插件或其他方法可以自动从您的数据库和架构中添加或删除所有 RI 约束?还是以每张桌子为基础?就像是:

remove_all_foreign_key_constraints('comments')

0 投票
3 回答
1219 浏览

database-design - 创建外键是否自动意味着参照完整性?

如果我创建一个外键是参照完整性自动的吗?我是否必须设置其他任何东西才能使级联工作?

编辑:例如,在 postgres 中。我的意思是自动我不需要设置任何其他东西来使 RI 工作。删除。我猜虽然 FK 意味着它将确保数据存在于 FK 中以进行插入。

0 投票
2 回答
1317 浏览

sqlalchemy - 参照完整性 - 如何配置 SQLAlchemy?

在配置 SQLAlchemy 模型时,有人可以帮助我了解全局,从而确保所有级别的引用完整性吗?

按照参照完整性应该由数据库表达和执行的想法,我创建了一个包含我认为需要的所有约束的模式(目前在 Postgresql 中),因此给我一个我信任的数据库将强制执行参照完整性。

然后我开始在这个数据库之上构建一个应用程序,在声明模式下使用 SQLAlchemy (0.7)。

经过一番搜索和阅读,我了解到我可以配置:

  • 我的 Column() 定义上的 onupdate/ondelete 规则。
  • 我的 relationship() 定义上的级联选项,
    并且这些似乎在 SQLAlchemy 的会话级别上运行。
  • 我的 relationship() 定义的passive_deletes 和passive_updates 选项。

并且所有这些选项都有默认值。

但是我对我实际上需要对我的 SQLAlchemy 模型做多少感到困惑,以确保 SQLAlchemy 在会话期间不会与数据库及其约束不同步。

如果我在 SQLAlchemy 中的 Columns() 定义上配置“onupdate”等,我到底要实现什么?

对于级联和passive_delete/passive_update 规则,我可以在relationship() 上进行配置。我在这里需要什么,为什么?

或者改写我的问题:SQLAlchemy 会在多大程度上了解数据库模式中配置的约束,以及我必须在多大程度上(以及如何)在我的模型中重复它们?

还有什么我应该注意的吗?:)

0 投票
1 回答
160 浏览

c# - 参照完整性在 N:N 关系中不起作用

这是 ms 创建表脚本:

SchoolclassCode 和 Pupil 表之间是 N:M 关系

当我在代码中删除 SchoolclassCode 对象时:

schoolclasscode 表中的条目被删除。但仅此而已。我什至可以另外删除 SchoolclasscodePupil 中的 schoolclasscodeId_FK 但没有学生被级联删除约束删除。

我错了什么?

0 投票
1 回答
681 浏览

playframework - 播放框架onetoone删除参照完整性

我得到一个 JUnit 测试的参照完整性约束违规。使用playframework和我的两个实体如下。

在我的 Junit 测试中,以下行失败

谢谢

0 投票
2 回答
1008 浏览

tsql - 检查存储过程中的引用完整性

我在 sql server 2000 数据库中有一个customer表和一个order表。

我不希望表中的订单在ordercustomerID中不存在,customer所以我在customerID.

这一切都很好,但是在编写可能违反约束的存储过程时,有没有办法检查是否会违反约束,如果会,跳过/回滚查询?

此刻所发生的只是存储过程返回一个错误,该错误显示在我的 asp 页面上,看起来相当丑陋 + 大多数用户不会理解它。

如果可能的话,我想要一种更优雅的方式来处理错误。

谢谢

0 投票
2 回答
790 浏览

oracle - 将数据从单个文件导入到多个 Oracle 表中

有没有一种方法可以在保持参照完整性的同时将数据从单个文件导入多个 Oracle 表?

0 投票
5 回答
236 浏览

sql - SQL Server 数据库模式是否总是通过使用外键和检查约束来强制执行其应用程序的业务逻辑?

感谢您之前的回答,但根据他们的反馈,我已经修改了这个问题。

如果问题的答案是否定的,那么可以通过任何其他方式强制执行数据的完整性。我不认为使用存储过程就足够了,因为它们可能会被规避。是否需要触发器?