如何在sql server中的计算字段上设置外键约束?

2023-12-25

表 A 有一个名为 Computed1 的计算字段。它是persisted并且不为空。此外,它总是计算出 char(50) 表达式。它也是唯一的并且具有唯一的键约束。

表 B 有一个字段 RefersToCompulated1,它应该引用有效的 Computed1 值。

尝试在 B 的 RefersToCompulated1 上创建引用 A' Computed1 的外键约束会导致以下错误:

Error SQL01268: .Net SqlClient Data Provider: Msg 1753, Level 16, State 0, Line 1 Column
'B.RefersToComputed1' is not the same length or scale as referencing column 'A.Computed1' in
foreign key 'FK_B_A'. Columns participating in a foreign key relationship must be defined with
the same length and scale.

问:为什么会产生这个错误?计算列的外键是否需要特殊措施?如果需要,它们是什么?


概括:

  • 具体问题是由计算得出的、基于 char 的字段为 varchar 引起的。因此,Computed1 是 varchar(50) 而不是 char(50)。
  • 最好对计算字段的表达式进行强制转换,以强制其为特定类型。这个建议归功于 Cade Roux。

计算字段由 char(M)、char(N) 等组成,加起来为 M+N+.. = 50,但计算字段本身是 varchar(50)。将 RefersToCompulated1 更改为 varchar(50) 而不是 char(50) 可以解决该问题。

计算字段外键不需要特殊处理(尽管计算列上可能需要持久化)。

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

如何在sql server中的计算字段上设置外键约束? 的相关文章

随机推荐

  • 尝试使用包 googlesheets4 将 R 连接到 Googlesheet 时出错:无法获取 Google 凭据

    我在尝试将 R 与 Googlesheet 包 googlesheets4 连接时遇到问题 错误 无法获取 Google 凭据 您是否在运行 googlesheets4 非交互式会话 考虑 gs4 deauth 以防止 尝试获取凭据 称呼g
  • “npm run dev”有效,但“next dev”无效

    我第一次尝试下一步 与npx create next app 但我没有让脚本工作 npm run dev工作正常 但是next dev输出zsh command not found next 为什么是这样 我使用的是 macOS 12 5
  • 加载本机库/缺少方法时出现问题:java.library.path 中没有 ttJdbcCS

    我在将 timesten 客户端连接到服务器时遇到一个问题我得到的 SQL 异常粘贴在下面 加载本机库 缺少方法时出现问题 java library path 中没有 ttJdbcCS 我正在使用 MAC OS X 10 7 2 我的 ti
  • Python:使用 __import__ 时执行相对导入?

    以下是本次测试中的文件 main py app init py master py plugin init py p1 py p2 py 我们的想法是拥有一个具有插件功能的应用程序 新的 py 或 pyc 文件可以放入遵循我的 API 的插
  • 如何设计此解决方案来应对来自 Algoexpert.io 的不可施工变更挑战

    我正在解决 algoexpert io 编码挑战 但无法理解标题为 的问题之一的建议解决方案不可施工的改变 这是挑战问题 给定一个正整数数组 表示您的硬币的价值 拥有 编写一个返回最小变化量的函数 最低金额 您cannot创造 给定的硬币可
  • 符号作为变量的值为 void: dired-mode-map

    我正在尝试重新映射 dired 中的一些键 如下所示 add hook dired mode hook lambda require dired define key dired mode map kbd M o nil define ke
  • 获取 Android ProgressBar 中 secondaryProgress 的宽度

    我有一个带有文本的进度条 其中我已经重写了 onDraw 如下所示 Override protected synchronized void onDraw Canvas canvas super onDraw canvas Paint te
  • 两个数据库之间同步

    我有一个也有 Web 界面的应用程序 要求之一是即使没有可用的互联网连接也能够在该应用程序上运行 这些数据库之间是否需要同步 这些数据库应该有相当大的磁盘空间 如果有这样的需求应该怎么做呢 我应该使用什么数据库 目标操作系统是Windows
  • Highcharts 十字准线,轴上带有标签

    是否可以使 highcharts 十字准线在单独标签中的轴上显示实际值 API 中的常规十字线示例不会执行此操作 如果我设置 tooltip crosshairs true true 它没有做我需要的事情 我需要的图表如下所示 这是在 Hi
  • MySQL Looped Join如何测试结果是否完整?

    情况 我有一个 mysql 目录表 每个目录都有一个父目录 存储为parentID 直到根目录的parentID为0为止 E g rowID 1 name Dir1 parentID 0 root directory rowID 2 nam
  • 有什么方法可以预测会话超时吗?

    有没有办法 捕获 会话超时事件 以便在 HttpSession 失效之前检索数据 我们正在实现 Filter 接口 并且在 doFilter 方法中 当会话超时时 我们在登录时存储在会话对象中的用户为 null 提前致谢 您应该能够注册Ht
  • iOS 提交问题与应用内购买

    我已经上传了包含两次应用内购买的应用程序 4 天后 我收到了此消息和 iTunes Connect 状态 您的应用内购买已被退回 您必须修改或删除突出显示的项目 两项应用内购买均以警告标志突出显示 并表示开发人员需要采取行动 关于问题是什么
  • 如何命名构造函数参数和成员变量?

    我在命名类的内部变量时不使用前缀 我知道有些这样做 但我不会开始 你为什么 辩论 我只是更喜欢这样 问题是有时在构造函数中传递相同的参数 我最终对如何命名它们感到困惑 例如 public class SampleClass private
  • 在 SignalR 中序列化/反序列化派生对象

    我将 SignalR 1 1 与 NET 客户端一起使用 我的集线器中有一个方法 它接受 BaseMessage 类的对象并将其广播给所有客户端 public void SendMessage BaseMessage message Cli
  • Android - 如何在代码中设置首选项

    我有一个 Android 应用程序 其中我的首选项位于 XML 文件中 运行良好 我现在想使用代码设置其中一个首选项 而不是显示整个首选项屏幕 我将如何执行此操作 我假设您所指的首选项是指应用程序的首选项 而不是 Android 手机设置
  • Spring Boot 与 Spring Batch 和 JPA 集成

    我正在将 Spring Boot 项目与 Spring Batch 和 Data jpa 项目集成 与作业和数据配置相关的所有内容都是正确的 除了将我的作业编写器结果保存在数据库中 在我读取文件并处理它之后 我无法将其写入 mysql 数据
  • 将整数拆分为其数字 C++

    我正在尝试自学 C 但遇到了一些障碍 问题是我需要取一个整数 将其拆分为数字并获取数字之和并显示它们 Example 输入号码 123456整数中的数字 1 2 3 4 5 6 sum 21 我已经完成了这一切 但是当我将整数撕成数字时 我
  • 如何在android中隐藏光标的特定行

    我有一个光标 它有 40 行 我想在用户选中复选框时隐藏一些行 一种方法是在游标上再次运行查询 但这对我没有帮助 因为条件是由Java完成的 计算余额 有很多逻辑 我需要一些东西来获取当前行 并返回它是否可以显示 任何帮助将不胜感激 我继承
  • 从 ASP.NET 中的代码隐藏推进向导

    我的页面上有一个向导 它有一个 下一步 按钮 当单击页面上的另一个按钮时 我想从代码隐藏中 单击 该按钮 进一步来说 我的页面上有一个按钮有两个功能 单击它后 在回发中 它要么设置重新加载页面并显示弹出窗口所需的代码 要么在认为不需要弹出窗
  • 如何在sql server中的计算字段上设置外键约束?

    表 A 有一个名为 Computed1 的计算字段 它是persisted并且不为空 此外 它总是计算出 char 50 表达式 它也是唯一的并且具有唯一的键约束 表 B 有一个字段 RefersToCompulated1 它应该引用有效的