ALTER TABLE 语句与 CHECK 约束冲突

Jos*_*gel 3 sql database sql-server foreign-keys

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

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

ALTER TABLE [contrato_sigob].[relacion_institucion_categoria]
ADD CONSTRAINT CHECK_CATEGORIA
CHECK([dbo].[func_CHECK_CATEGORIA](id_categoria)=1);
Run Code Online (Sandbox Code Playgroud)

错误说:

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'.
Run Code Online (Sandbox Code Playgroud)

Tab*_*man 6

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

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

ALTER TABLE TABLE_NAME WITH NOCHECK 
ADD CONSTRAINT ...
Run Code Online (Sandbox Code Playgroud)