尝试删除时 SQL 异常错误 #547 和外键约束违规

2024-06-23

我正在查看一些代码(我没有编写它!)来测试我们的代码在尝试删除存在依赖项的表行时是否捕获两个错误条件。

该代码最初查找消息中的特定文本,而不是使用错误号。

为了提供多语言支持,最好根据错误号而不是错误消息来捕获异常。

在测试中,代码正在查找两组文本,但我似乎无法确定它们之间的区别,因此仅检查错误号 547 会让人感到不舒服。

  1. DELETE 语句与 REFERENCE 约束冲突...
  2. DELETE 语句与 SAME TABLE REFERENCE 约束冲突...

是否可以安全地假设这两条错误消息的错误号均为 547? 干杯 科林


547 是用于的错误代码any违反约束,不仅仅是外键,例如:

create table T (
    ID int not null,
    constraint CK_Not1 CHECK (ID != 1)
)
go
insert into T (ID) values (2)
go
update T set ID = 1


(1 row(s) affected)
Msg 547, Level 16, State 0, Line 1
The UPDATE statement conflicted with the CHECK constraint "CK_Not1". The conflict occurred in database "Flange", table "dbo.T", column 'ID'.
The statement has been terminated.

话虽这么说,除了外键之外,我想不出任何其他类型的约束可能会被违反DELETE声明。(向@onedaywhen 致敬)


如果你看进去sys.messages,你会发现 547 必须是违反约束的:

select text from sys.messages where message_id=547 and language_id=1033

%ls 语句与 %ls 约束“%.*ls”冲突。数据库“%.*ls”、表“%.*ls”%ls%.*ls%ls 中发生冲突。

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

尝试删除时 SQL 异常错误 #547 和外键约束违规 的相关文章

  • 插入 SQL Server 视图时使用 @@identity 或输出?

    请原谅我 我对 StackOverflow 和 SQL 都是新手 Tl dr 使用时 identity 或任何其他选项 例如scope identity或输出变量 是否也可以使用视图 这是一个使用存储过程的示例 identity SNIP
  • SQL查询获取列的精度值

    我需要一个 SQL 查询来获取某些列的精度值 我主要关心十进制类型列 并且我需要相同的精度值 我意识到在某些版本和数据库服务器供应商中可以这样做 如果您能列出其中的一些 那就太好了 对于 SQL 服务器 select precision f
  • SQL Case 语句会失败吗?

    有没有办法让 SQL 中的 CASE 语句像 C 中的 case 语句一样失败 我不想做的是下面的例子 但如果这是我唯一的选择 我想我会选择它 EXAMPLE NewValue CASE WHEN MyValue 1 THEN CAST M
  • SQL CASE 语句

    我有以下查询 我想将它们放入 sql CASE 语句中 这样我只有一个查询 但我不知道该怎么做 有人可以帮助我吗 IF SELECT EtlLoadId FROM ssislogs audit processcontrol WHERE Su
  • 我应该在删除数据之前禁用聚集索引吗?

    我知道这已经像任何事情一样被讨论过 但找不到我可以接受的可靠答案 假设我有一个有100亿条记录的表 需要删除where子句中带有标识列的记录 我应该选择哪个选项 选项1 禁用索引 这将节省删除后重新排列索引的开销 但会花费更长的时间来搜索需
  • Redis 与 SQL Server 性能对比

    应用程序性能是使用缓存而不是关系数据库的主要原因之一 因为它以键值对的形式将数据存储在内存中 所以我们可以将经常访问的不经常更改的数据存储在缓存中 从缓存中读取比从数据库中读取要快得多 Redis 是分布式缓存市场上最好的解决方案之一 我正
  • 如何使用存储过程 SQL SERVER 2008 R2(mssql) 插入 PHP 数组值

    我有这个数组 REV Array 0 gt 240 1 gt 241 2 gt 242 3 gt 243 4 gt 249 我现在使用下面的代码进行插入 将每个数组的元素存储在带有 id userID Type 和 Date 的行中 if
  • ROUTINE_NAME 和 SPECIFIC_NAME 之间有什么区别?

    在 INFORMATION SCHEMA ROUTINES 视图中 存在 ROUTINE NAME 和 SPECIFIC NAME 按照MSDN http msdn microsoft com en us library ms188757
  • SQL Server 中不需要的日期时间舍入

    我遇到了一些看起来很奇怪的事情 SQL Server 似乎正在舍入一些DateTime当我将它们保存到时 值不合适datetime列 我怀疑我错过了一些东西 但我找不到它 我正在使用 NET 4 0 针对 SQL Server 2008 运
  • 如何在 SQL Server 会话中设置自动提交?

    如何在 SQL Server 会话中设置自动提交 您可以通过将implicit transactions设置为OFF来打开自动提交 SET IMPLICIT TRANSACTIONS OFF 当设置为ON时 返回隐式事务模式 在隐式事务模式
  • 使用 sql 查询选择最近 30 天

    我正在查找过去 30 天内周一 周二 周三 周四 周五 周六 周日的数量 我可以在没有实际数据库表的情况下选择最近 30 天的日期和星期几吗 就像是 SELECT everything between convert date GETDAT
  • 为什么实体框架 6 在插入后不只选择scope_identity()?

    当您使用 EF 6 1 保存实体时 将生成并执行以下 SQL 代码 exec sp executesql N INSERT dbo Customers Name FirstName VALUES 0 1 SELECT CustomerId
  • SQL限制数据库中的最小值和最大值

    CREATE TABLE TBL CD CDnr int identity 1 1 CDTitel nvarchar 80 NOT NULL CDduur int CDprijs smallmoney 所以我正在创建这个表 有什么方法可以将
  • 如何在 SQL 中编写 where 子句来按一天中的时间过滤 DATETIME 列?

    我有带有 DATETIME 列时间戳的数据 我想将其过滤到 DATETIME 介于上午 9 30 到下午 5 30 之间的任意一天的记录集 最好的方法是什么 更新 更改是因为我需要精确到分钟 而不仅仅是小时 对于那个很抱歉 您始终可以将其编
  • 选择仅属于特定部门的用户

    我有下表 其中包含两个字段 即 a 和 b 如下所示 create table employe empID varchar 10 department varchar 10 插入一些记录 insert into employe values
  • 有没有办法使用 SqlBulkCopy 而不将数据转换为 DataTable?

    有没有办法使用 SqlBulkCopy 而不将数据转换为 DataTable 我在 RAM 中有一个对象列表 List 我真的不想使用更多内存来创建数据表 是否可以在列表上实现 IDataReader Thanks 我当然想象你可以 Bul
  • DbContext 和连接池

    在我继承的应用程序中 基本控制器中有这个 应用程序中的所有其他控制器都继承自该控制器 public BaseController db new MyDbContext db Database Log s gt Debug Write s p
  • SQL Server 2008:TOP 10 和不同的一起

    正如标题所示 我正在使用 SQL Server 2008 如果这个问题非常基本 我深表歉意 我才使用 SQL 几天 现在我有以下查询 SELECT TOP 10 p id pl nm pl val pl txt val from dm la
  • sp_MSforeachtable 在每个表上执行过程

    我想打印一些动态查询来对数据库中的所有表执行过程 这是我到目前为止所写的 EXEC SP MSFOREACHTABLE IF EXISTS SELECT FROM INFORMATION SCHEMA COLUMNS WHERE COLUM
  • 如何处理 FOR XML PATH/AUTO 中的空白值 - SQL Server?

    有没有人对这种 SQL Server 行为有任何见解或遇到过 当空白值转换为数据类型时 char 或具有 的列char 作为数据类型 处理使用For XML PATH 它返回 XML 结果 20 空格的特殊字符编码 当相同的空白值转换为va

随机推荐

  • 如何从客户端的 javax.ws.rs 实体获取纯 XML

    我有一个REST客户端创建一个XML实体通过Entity entity myObject MediaType APPLICATION XML TYPE 之后我打电话webTarget request buildPost 如何获取请求正文XM
  • 检索给定用户发表评论的所有帖子,Ruby on Rails

    我有用户 帖子和评论 用户只能对每个帖子发表一条评论 class User lt ActiveRecord Base has many posts has many comments end class Post lt ActiveReco
  • 如何修复“无法读取 null 的属性‘addEventListener’”错误[重复]

    这个问题在这里已经有答案了 我正在从 Mozilla 开发者网络 MDN 学习 javascript 我在猜数字游戏中遇到错误 该错误在第 46 行显示 Uncaught TypeError Cannot read property add
  • Android:单元测试

    需要一些建议 我有一个应用程序 我需要写一些单元测试 但我真的不知道要测试什么 我已经测试了设置和所有首选项 这很简单 人们通常还会测试什么 假设我有 3 项活动 主要的一个是列表活动 当您单击列表项时 它会将您转发到第二个列表活动 并且在
  • EF Core 2.1 内存数据库不更新记录

    我正在使用内存数据库提供程序进行集成测试 但是我似乎无法更新记录 我已经针对真实的 SQL 数据库运行了相同的代码 并且一切都得到了很好的更新 这是我的测试装置代码 测试夹具 public class TestFixture
  • 动态添加字段到 Razor 表单

    我有一个 Razor 表单 其中包含我想要动态添加项目的项目列表 表格 您可以从下拉列表中选择项目 单击 添加 下拉列表中的项目将添加到列表中 然后我希望所有这些都通过POST当我提交我的表格和我的控制器时HttpPost方法可以处理输入
  • Android Studio 2.2.2:Mac OS X 中缺少工具 > Android 菜单

    标题 差不多了 通常 工具 菜单中有一个 Android 项 其中包含Android SDK Manager之类的东西 由于整个 工具 菜单未显示 因此我无法访问 SDK 管理器 什么控制该子菜单是否显示 我怎样才能解决这个问题 这发生在我
  • 拆分 MS Access 数据库并将后端存储在 Sharepoint 中?

    我有一个包含大量 VBA 代码的 MS Access 数据库 如果我创建 Access Web App 我将失去代码提供的功能 有没有什么方法可以将我的数据库表存储在 SharePoint 中 而不是列表中 并将它们链接到前端以保留在每个用
  • 如何在Python中将HDF5文件直接上传到S3存储桶

    我想将使用 h5py 创建的 HDF5 文件上传到 S3 存储桶 而不使用 boto3 本地保存 This solution https stackoverflow com questions 48491839 any way to wri
  • 如何在azure devops模板任务中参数化azureSubscription

    我正在尝试使用 Azure Devops 模板中的参数 我可以打印模板内的任何参数 但是 当我在模板中使用参数来处理任何需要天蓝色订阅的任务时 管道总是会失败 管道无效 作业 myDeployment 步骤输入 azureSubscript
  • Try-catch-finally,然后再次尝试 catch

    我经常遇到这样的情况 try stmts catch Exception ex stmts finally connection close throws an exception 最后仍然需要一个 try catch 块 克服这个问题的最
  • 在 Atom 中使用氢时出现巨大的 IPKernelApp 错误

    从几天前开始 在几个月没有出现问题之后 我在 Atom 中编辑代码时开始不断弹出一个巨大的错误框 我相信它来自 Hydrogen 插件 奇怪的是即使出现此错误 代码仍然运行并执行我想要的操作 我创建了一个新的 conda 环境 仅安装我需要
  • TensorFlow:从 RNN 获取所有状态

    你如何获得所有隐藏状态tf nn rnn or tf nn dynamic rnn 在 TensorFlow 中 API 只给我最终状态 第一种选择是在构建直接在 RNNCell 上运行的模型时编写一个循环 然而 时间步数对我来说不是固定的
  • 尝试使用 Google 游戏服务登录时出错

    我正在尝试将谷歌游戏服务集成到我的应用程序中 但当我尝试使用测试帐户登录时出现错误 我已遵循他们的所有指示https developers google com games services training signin https de
  • 自动滚动 PyQT QTextWidget

    我怎么能够自动滚屏到我的底部QTextEdit 在我的 GUI 初始化函数中 self mytext QTextEdit self cursor QTextCursor self mytext document self mytext se
  • 如何为 Google 地图信息窗口设置特定高度?

    我知道最大宽度可以用 maxWidth 设置 我想知道为什么没有 maxHeight 选项 这是您要找的吗 如何设置谷歌地图标记信息窗口最大高度 https stackoverflow com questions 919659 how to
  • Python tqdm import检查jupyter笔记本或实验室是否正在运行

    我有一个模块 tqdm 我需要根据是否运行我的模块以不同的方式导入它 ipynb在 jupyter 笔记本或 jupyter 实验室环境中 有没有办法可以在 python 中确定这一点 例如 if
  • 使用单表继承更改 Rails 中 ActiveRecord 类的类型

    我有两种类型的课程 BaseUser lt ActiveRecord Base and User lt BaseUser 它使用 Authlogic 的身份验证系统来 acts as authentic 这种继承是使用单表继承来实现的 如果
  • 使用 Python 的 Popen 替换 Bash 风格的进程

    在 Bash 中 您可以轻松地将进程的输出重定向到临时文件描述符 并且所有这些都由 bash 自动处理 如下所示 mydaemon config file lt echo autostart True n daemonize True 或者
  • 尝试删除时 SQL 异常错误 #547 和外键约束违规

    我正在查看一些代码 我没有编写它 来测试我们的代码在尝试删除存在依赖项的表行时是否捕获两个错误条件 该代码最初查找消息中的特定文本 而不是使用错误号 为了提供多语言支持 最好根据错误号而不是错误消息来捕获异常 在测试中 代码正在查找两组文本