【问题标题】:The ALTER TABLE statement conflicted with the CHECK constraintALTER TABLE 语句与 CHECK 约束冲突
【发布时间】:2017-09-06 13:23:17
【问题描述】:

我想在两个数据库之间创建一个外键。碰巧这些表有数据,所以当我制作外部关系时,会出现错误。

我发现当您的表有数据时会发生错误。那么如何不验证现有数据呢?

ALTER TABLE [contrato_sigob].[relacion_institucion_categoria]
ADD CONSTRAINT CHECK_CATEGORIA
CHECK([dbo].[func_CHECK_CATEGORIA](id_categoria)=1);

错误提示:

The ALTER TABLE statement conflicted with the CHECK constraint "CHECK_CATEGORIA". The conflict occurred in database "SIGOB_Contraloria", table "contrato_sigob.relacion_institucion_categoria", column 'id_categoria'.

【问题讨论】:

  • 先修复数据
  • 您使用的是哪个 RDBMS?这个问题被标记为“mysql”,但对我来说这看起来像 MS SQL Server。
  • @IkeWalker 是 Sql Server。该标签建议我使用 mssql,但忽略该标签
  • 为什么要先修复数据? @realspirituals
  • 如果你想要一个外键,你为什么要实现 CHECK 约束?

标签: sql sql-server database foreign-keys


【解决方案1】:

那么如何不验证现有数据呢?

您可以通过添加 WITH NOCHECK 创建一个不会检查现有记录的约束:

ALTER TABLE TABLE_NAME WITH NOCHECK 
ADD CONSTRAINT ...

【讨论】:

    猜你喜欢
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    相关资源
    最近更新 更多